摘要:
Python函数的缺省参数、参数数量可变、命名关键字参数
函数的缺省参数
缺省参数语法:
注:
1、函数参数可以不采用缺省参数,如之前的例子,也可以有多个(可以全部都是)。
2、缺省参数必须自右至左依次存在,如果一个参数有缺省参数,则其右侧的所有参数都必须有缺省参数。
示例:
图:缺省参数示例
示例2:
图:一旦出现缺省,后面都要缺省
参数个数可变函数:
如之前学过的print函数,函数的参数个数是可以变化的,我们自定义的函数也可以很简单的实现函数参数个数可变。
1、*() 即 *元组 方式:
以元组方式实现函数参数个数可变。
2、**{} 即 **字典 方式:
以字典的方式实现参数个数可变函数。
3、参数可变(混合式):
采用元组,字典混合使用,实现参数个数可变函数。
命名关键字参数
上例,函数期望要求kw输入中有 school和address两个关键字参数,但是实际调用时,不给的这两参数函数也会调用,这不是期望的。如何解决这个问题呢?命名关键字参数可以解决这个问题。
*号之后的参数,name1,name2就是命名关键字参数,函数调用时不指定 name1,name2就报错。
注:命名关键字参数和位置参数不同
示例:
函数小结:
1、Python的函数具有非常灵活的参数形态,既可以实现简单的调用,又可以传入非常复杂的参数。
2、默认参数一定要用不可变对象
3、要注意定义可变参数和关键字参数的语法
*args是可变参数,args接收的是一个元组
**kw是关键字参数,kw接收的是一个字典
4、调用函数时如何传入可变参数和关键字参数:
可变参数既可以直接传入:func(1, 2, 3),又可以先组装list或tuple,再通过*args传入:func(*(1, 2, 3))
关键字参数既可以直接传入:func(a=1, b=2),又可以先组装dict,再通过**kw传入:func(**{'a': 1, 'b': 2})
def 语句实时运行
def 语句实际上是可执行的,当他运行时候,他创建一个新的函数对象,并将其绑定到一个变量名。
def 语句可以出现在其他任何语句出现的地方。
函数嵌套:
Python函数可以嵌套,实时运行另外一个例子。
函数变量
可以把函数名赋值给变量,通过变量调用函数。
一切皆对象!
函数做实参
可以把函数名赋值给变量,通过变量调用函数位置传参。
函数做返回值:
函数可以作为函数的返回值。
领取专属 10元无门槛券
私享最新 技术干货