Python编程基础(第3版)(微课版)课件 单元5--10 函数--- 综合案例:汽车销售数据 分析.pptx
自定义函数;;Python允许在函数内部定义另外一个函数,即嵌套函数。
定义在其他函数内部的函数称为内置函数,而包含内置函数的函数称为外部函数。
内置函数中的局部变量独立于外部函数,如果外部函数想要使用这些变量,那么需要声明相应变量为全局变量。;defmean(*args):#定义求均值函数
...m=0
...defsum(x):#内建求和函数
...sum1=0
...foriinx:
...sum1+=i
...returnsum1
...m=sum(args)/len(args)
...returnm;Python也将函数视为对象,因此允许外部函数在返回结果时直接调用内置函数的结果。
如下代码示例,可以简化求均值函数,令其直接返回求和函数的结果。;;定义函数时往往需要在函数内部对变量进行定义和赋值,在函数内部定义的变量即局部变量。
例如,定义一个求和函数,代码如下。;与局部变量对应,定义在函数外部的变量即全局变量。
全局变量可以在函数内部被调用,代码如下。;全局变量不能在函数内部直接被赋值,否则会报错,代码如下。;若同时存在全局变量和局部变量,则函数会使用局部变量对全局变量进行覆盖,代码如下。;如果想要在函数内部对全局变量赋值,那么需要使用关键字global。
在嵌套函数中,nonlocal的用法和global类似,示例代码如下。;;【任务5-1】构建计算用餐总价格的函数;;【任务5-2】构建求方差函数;自定义函数;;Python提供了自定义函数的功能。使用def关键字可以自定义函数,格式如下。;函数定义示例如代码如下。;;在Python中,函数参数主要有以下4种。
(1)位置参数。调用函数时,根据函数定义的位置参数来传递参数。
(2)关键字参数。关键字参数通过“键-值”形式加以指定,可以让函数更加清晰、容易使用,同时也消除了参数的顺序要求。
(3)默认参数。定义函数时为参数提供了默认值的参数称为默认参数。在调用函数时,默认参数的值可传可不传。需要注意的是,所有的位置参数必须出现在默认参数前。
(4)可变参数。当定义函数时,有时候不确定之后调用时会传递多少个参数(也可以不传参数)。此时,可使用定义任意位置参数或关键字参数的方法来进行参数传递。;在调用内置函数时,函数提供了默认参数。下面定义一个计算利息的函数,示例如下。;定义函数时需要确定函数的参数个数,参数个数表示函数可调用的参数个数的上限。
当定义函数时,如果无法确定参数个数,可以使用*args和**kwargs定义可变参数。
在定义任意数量的位置可变参数时,参数名前面需要有一个星号(*)作为前缀,在传递参数的时候,可以在原有的参数后面添加0个或多个参数,这些参数将会被放在元组中并传入函数。
任意数量的位置可变参数必须定义在位置参数或关键字参数之后,示例代码如下。;defexp(x,y,*args):
...print(x:,x)
...print(y:,y)
...print(args:,args)
exp(1,5,66,55,abc)
x:1
y:5
args:(66,55,abc);在定义任意数量的关键字可变参数时,参数名前面需要有两个星号(**)作为前缀。
在传递参数时,可以在原有的参数后面添加任意数量的关键字可变参数,这些参数会被放到字典中并传入函数,示例代码如下。
任意数量的关键字可变参数必须在所有默认参数之后,顺序不可以调转。;3.任意数量的关键字可变参数;;函数可以处理一些数据,并返回一个或一组值。
函数返回的值称为返回值。
需要保存或调用函数的返回值,那么需要使用return语句,示例代码如下。;函数返回值;;位置参数调用是最常用的函数调用方式,函数的参数严格按照函数定义时的位置传入,顺序不可以调换,否则会影响输出结果或直接报错。
例如,range函数定义的3个参数start、stop、step需按照顺序传入,示例代码如下:;当函数的参数有默认值时,可以不设置相应的函数参数,因为此时的函数会使用默认参数,代码如下。;除了可以使用位置参数对函数进行调用外,还可以使用关键字参数对函数进行调用。
当使用关键字参数时,可以不严格按照定义参数时参数的顺序传入值,因为解释器会自动根据关键字进行匹配,示例代码如下。;关键字参数也可以与位置参数混用。
关键字参数必须跟在位置参数后面,否则会报错,示例代码如下。;使用*args位置可变参数可以直接将元组或列表转换为参数,然后传入函数,示例代码如下。;3.可变参数调用;匿名函数;;匿名函数是指不使用def语句这