本期要点:
Python中如何自定义函数。
自定义函数的规则包括:
自定义函数定义后,就可以像内置函数一样进行调用。例如:
emmm...酱油君把Give写成了Five,莫非是想运行之前先来个Give me Five?
在调用函数时,使用的参数类型有4种,分别是
必需参数、关键字参数、默认参数、不定长参数
。
1. 必需参数
函数调用时的参数必需与声明时的参数一样。如果没有输入参数,或输入了多个数,都会在Shell或者File页面显示报错信息。
2. 关键字参数
调用函数时,允许函数调用时参数的顺序
与声明
时不一致,因为Python解释器能用
参数名匹配参
数值
。
例如,在第一次调用时,是按照参数声明顺序的,没有使用参数名;在第二次调用时,没有按照参数声明顺序,而是使用了参数名。两次调用输入的结果是一样的。第三次调用时,没有输入任何参数名或参数值,在Shell页面显示了报错信息。
3. 默认参数
在调用函数时,如果没有传递参数,就会使用默认的参数。需要注意的是,在圆括号中定义参数时,
默认参数必须放
在最后
,否则Python会在File中报错。
例如,在第一次调用函数时,按照函数声明的参数名顺序直接给出了参数值;在第二次调用时,通过关键字给出了参数值;第三次调用时,没有给出性别和部门的参数值,于是程序输出了默认的性别为男、部门为研发部门的值。
4. 不定长参数
当函数需要处理比声明时更多的参数,就需要用到不定长参数。不定长参数在声明时不会命名。在必需参数之后,
加一
个星号*
的参数会以元组(tuple)的形式存放所有未命名的变量参数。
加两个星号**
的参数会以字典的形式存放所有未命名的变量参数。
例如,设置name为必需参数,以一个星号*声明tup1,以元组的形式存放可变参数。
函数中的变量是没有类型的,但是它对应的对象是有类型的。
例如,变量x可以被赋值为字符串(x='abcdefg'),也可以被赋值为一个列表(x=[a,b,c,d,e,f,g])。
变量x仅仅是一个指针,一个对象的引用。
变量x可以指向任何类型的对象。
1. 不可更改对象
在Python中,
字符串、元组和数
值型
是不可更改的对象
。即,在自定义函数进行更改并调用后,仍然维持原来的值。
例如,在下面的代码中,b的初始值是2,在自定义函数Change中会将b重新赋值为3。函数调用结束后,输入b的值,仍然是2。
2. 可更改对象
在Python中,
列表、字典是可以更改的对象
。即,在自定义函数进行更改并调用后,仍然维持原来的值。
例如,在下面的代码中,b的初始值是[200,300,600],在自定义函数Change中会利用append方法将b增加一个列表项1000。函数调用结束后,输入b的值,变成了[200,300,600,1000]。
匿名函数不需要使用def语句加函数名的形式来定义函数,而是使用
lambda
来创建匿名函数。lambda的主体是一个表达式,而不是代码块,因此只能封装比较简单的逻辑,且不能够访问自己参数列表之外或者全局命名空间里的参数。
lambda函数只包含一个语句,具体为:
lambda arg1,arg2,...,argn:expression
例如,如下的lambda函数,同样实现了求正弦和余弦之和的平方: