大家好,今天我们一起探索一下Python的又一重要成员,函数。提起函数,大家的第一印象应该是上学期间学过的数学函数,那究竟什么是函数,函数有什么作用?我的理解是这样的,函数就是一个加工厂,一个确定的输入经过函数的处理后产生一个唯一的输出,从这种视角,可以将函数看作“机器”或者“黑盒”,我们不需要关心函数内部究竟做了什么,我们只需要了解什么样的输入对应什么样的输出这个规则就可以了,事实上至今为止,我们对Python的学习也正是这样做的。
还记得这一段时间以来经常用的一些方法吗,type()、help()、print()、input()、id(),这些全是Python给我们的宝贵财富,内置函数,我们可以很方便的去使用它们,而不必去关心具体实现细节。前几天,有读者问我,在什么时候需要写成.get()、.pop()的形式呢,调用某个函数的时候吗?差不多,但是不准确。为什么这样说呢?大家请看一下print函数的文档。
从文档中可以看出,print函数是模块builtins里面的一个内置函数,我们可以根据文档说明直接以print()的形式调用它。现在有个问题,为什么不需要import 导入builtins模块呢?小编仔细查阅了各方面文档,终于找到了答案,原来:Python解释器启动时会自动执行: from builtins import *,这句代码的意思就是从模块builtins里面导入所有已定义的名字。
在这里顺便说一下,模块也就是实现好的代码包,Python的强大之处就在这里,你可以通过import语句引入前人写好的任何模块,而事实上你遇到的问题80%前人已经遇到过了,所以Tips:当遇到一些问题时,先上网找一找,看有没有现成的模块使用,掌握了基本技能之后,编程做软件其实就是搭积木。,我们再看下一个函数sin的Python文档。
我们发现,一开始使用help(sin)语句时,报错name 'sin' is not defined,就是名字'sin'没有被定义,后来通过执行from math import *语句后,我们才可以正常使用sin函数,大家也可以以模块名.函数的方式调用,如下图。
大家再看一下下面的代码。
从中我们可以得到这样的信息,str是builtins中的一个类,join是类str中的一个方法。一般情况下把定义在类内部的函数称为方法。在Python中调用方法的形式是:“对象.方法”,上文中读者提到的写成.get()、.pop()的形式就是在这种情况下。
,当然除了使用内置函数,我们也可以创造属于自己的函数,比如笔者在上一篇文章中写的isPrime函数。
用系统内置的函数方便自然不必说了,那我们自己又为什么要创建函数呢?请先看一个没有函数的代码。
什么感觉,代码那么长,可读性好差,好low,相似的代码重复了那么多次,反正是各种不爽,对吧!,下面我们看一下有函数的版本。
是不是看起来很清爽,是不是代码功能一目了然,是不是很高大上。
对滴,这就是要创建函数的原因。函数是按规则写好的、可重复使用的、用来实现单一或相关联功能的代码段。函数能提高代码的重复利用率,增强代码的可读性。
自定义函数的形式如上图所示,需要注意一下几点:
1、def是关键字
2、起函数名要尽量和功能相关,便于后续维护
3、括号内是需要传递给该函数的参数,如果不需要也可以省略
4、括号后是冒号,这是Python定义函数的形式,务必要记住
5、do something部分就是该函数要实现的功能代码
6、如果有返回值,则使用return关键字返回,如果没有返回值,return可以省略。
这些知识点,初学者一定要通过实际操作来掌握。
另外,还有一个很有趣的定义函数的方式,也和大家说一下。
上述代码,用到了关键字lambda创建匿名函数,看起来很简单,很便捷吧,lambda的语法如下图所示,其中表达式也可以是其他函数。
我们还可以利用lambda从一个函数生成新的函数,如下图所示
怎么样,是不是很牛X,lambda关键字的这个用法一定要记住,大家在以后的编程中一定会遇到很多需要它的场合。
,又是一桌大餐完成了,大家准备好刀叉,敬请享用吧!
领取专属 10元无门槛券
私享最新 技术干货