
1.2.6 函数
函数是组织好的、可重复使用的代码,能提高应用的模块性和代码的重复利用率。Python提供了许多内置函数,当然用户也可以自己定义函数。
1.内置函数
内置函数无须用户定义,直接调用即可,例如前面经常使用到的print()函数,可以用此函数在屏幕上打印输出数据。
2.自定义函数
除了使用Python内置函数,用户也可以自己定义函数。自定义函数语法如下:

创建自定义函数的规则如下:
(1)以def关键词开头,后接函数名称和圆括号(),再接冒号。
(2)传入的参数必须放在圆括号中,圆括号之间用于定义参数。
(3)函数代码块内容以冒号起始,并且缩进。
(4)return后接函数的最终返回值。
例如定义fun()函数,其中x和y是fun()函数的两个参数,此函数将x和y参数接收的值相加,然后赋值给变量z,最后将变量z的值作为此函数的返回值,示例代码如下:

运行结果如下:

3.匿名函数
匿名函数是一种特殊的自定义函数,特殊在定义的函数没有名称。一般在自定义功能比较简易的函数时,可以定义成匿名函数。Python中使用lambda来创建匿名函数。语法结构如下:

下面定义一个匿名函数,示例代码如下:

运行结果如下:

讲解一下此匿名函数的定义和使用方法,lambda后设置了x和y两个参数,冒号后是函数的返回值表达式,此匿名函数的处理方式为将参数x和y接收的值相加。此时lambda x,y:x+y就是一个完整的匿名函数。在函数后传入100和99,函数中的x和y参数接收到值后,再将两个值相加,最后返回值为199。
也可以将定义好的匿名函数赋值给变量,变量就相当于是函数名,这样看起来与普通函数的用法相同,示例代码如下:

运行结果如下:

4.函数的参数调用
函数的调用很简单,这里主要讲解函数的参数调用方式,函数的参数调用通常分为按位置给参数赋值和通过指定参数名称给参数赋值。
按位置给参数赋值是对照函数的参数位置一一赋值,但如果遇到函数的参数比较多,并且只需使用到其中一部分参数时,如果按照参数位置赋值,函数就显得比较臃肿、不简洁,则可以通过指定参数名称来给这些参数赋值,这就是Python的关键字参数赋值。这种参数赋值方式有两大优点:第一,不再需要考虑参数的顺序,函数的使用将更加容易;第二,可以只对那些希望赋值的参数赋值。
下面罗列出了常见的参数赋值方式,示例代码如下:

运行结果如下:

注意:函数的参数分为必选参数和可选参数,例如自定义函数fun(x,y=1,z=0),x就是必选参数,表示必须填写;而y和z是可选参数,表示可以填写,也可以不填写(因为可选参数有默认值)。