1. 函数参数的类型
在定义函数和调用函数时,函数的参数类型很重要;参数参数的类型有 必备参数、关键字参数、默认参数、不定长参数等等。
1.1 必备参数
必备参数要以正确的顺序传入函数;函数调用时实参的数量要和函数定义时形参一样。
例子1: 注意: 必备参数要求形参和实参的对应关系严格,一要数量上要一致,二要求顺序上一致。
1.2 关键字参数
关键字参数和函数的调用关系密切,函数调用时使用关键字参数来确定传入的参数值;关键字参数许可函数调用时与声明时不一致,Python 解释器能够用参数名匹配参数值。
例子2: 注意: 关键字参数不用考虑形参的顺序,也可得到相同的结果。
1.3 默认参数
定义函数时,可给某些形参设置默认值;在调用函数时,参数的值若没有传入,就会输出默认值。
例子3: 注意: 若参数没有默认值,实参也没有传入具体的值的话,就会报错。默认值必须赋给最后一个参数,否则会报错;也不要间隔。
例子4:
1.4 不定长参数
在使用函数时,可能会需要一个函数能处理比当初定义时更多的参数;这些参数叫作 不定长参数,不定长参数的函数定义时,形参不会命名。 语法如下:
def ble([args],*var):
function_body
return [expression]
星号(*)的变量名会存放所有未命名的变量参数。
例子5: 注意: *var,用来存放被调用时从实参传入的值;比较灵活,调用者不必再参数的个数和顺序上费时,但想处理某个具体的参数时,就没有前面几张方式简洁。
2. 匿名函数
在 Python 中可用 lambda 函数来创建匿名函数,lambda 函数是一个表达式,函数体比 def 简单;lambda 函数的主体是一个表达式,而不是一个代码块,仅能在 lambda 函数表达式中封装有限的逻辑进去。 lamdba 函数有自己的命名空间,且不能访问自由参数列表之外或全局命名空间里的参数。 语法如下:
lambda[[,args2,....args]]:expression
args:可选,通常是逗号分隔变量表达式的形式,即位置参数。 exprssion:不能包含分支或循环(允许条件表达式),也不能包含 return(或 yieid)函数。,若为元组,应用圆括号包含起来。 使用 lamdba函数需注意一下几点:
- lambda 函数定义的是单行函数,若需要复杂的函数,应定义普通函数;
- lambda 函数参数列表可包含多个参数,如 lamdba Y , Z : Y Z;
- lambda 函数中的表达式不能含有命令,只限一条表达式。
例子6:
|