
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人
2.12 函数
函数是在一个程序中可以被重复使用的一段程序。这段程序是由一块语句和一个名称组成的,只要函数定义好以后,你就可以在程序中通过该名字调用执行这段程序。
2.12.1 普通函数
普通函数一般由函数名(必需)、参数、语句块(必需)、return、变量这几部分组成。
函数定义语法如下所示。

定义函数使用的关键词是 def,函数名后面的括号里面放参数(参数可以为空),参数后面要以冒号结尾,语句块要缩进四个空格,语句块是函数具体要做的事情。
定义一个名为learn_python的函数:

上面的函数利用函数名learn_python调用了多次learn_python对应的语句块。
函数的参数有形参(形式参数)和实参(实际参数)两种,在定义函数的时候使用的参数是形参,比如上面的 location;在调用函数时传递的参数是实参,比如上面的地铁。
上面语句块中直接执行了print操作,没有返回值,我们也可以利用return对语句块的运行结果进行返回。
定义一个含有return的函数:


这次调用函数以后,没有直接进行print操作,而是将运行结果利用return进行了返回。
定义一个含有多个参数的函数:

2.12.2 匿名函数
匿名函数,顾名思义就是没有名字的函数,也就是省略了def定义函数的过程。lambda只是一个表达式,没有函数体,lambda使用方法如下:

arg1,arg2,arg3表示具体的参数,expression表示参数要执行的操作。
现在我们分别利用普通函数和匿名函数两种方式来建立一个两数相加的函数,让大家看看两者的不同。
普通函数如下:

匿名函数如下:

匿名函数比普通函数简洁得多,也是比较常用的,大家务必熟练掌握。