目录
- 关键字参数
- 位置参数:
- 关键字参数
- 位置参数和关键字参数的混合使用
- 关键字参数注意点
- 参数默认值
- 使用参数默认值
- 普通参数收集(*xxx)
- 注意点
- 关键字参数收集(**xxx)
- 逆向参数收集
- 注意点:
- dict(字典)的逆向参数收集
关键字参数
参数默认值
参数收集
逆向参数收集
关键字参数
Python函数的参数名不是无意义的,Python允许调用函数时通过名字来传入参数值
调用函数时,支持两种方式为参数指定值:
方式1:位置参数:必须按顺序为每个参数指定参数值
方式2:关键字参数(命名参数):按参数名为参数指定参数值
位置参数:
关键字参数
相比于位置参数,关键字参数的优势:不用按顺序,可读性更高
位置参数和关键字参数的混合使用
关键字参数注意点
如果希望调用函数时混合使用关键字参数和位置参数,关键字参数必须位于位置参数之后。
参数默认值
程序需要在定义函数时为一个或多个形参指定默认值——这样调用函数时就可以省略为该形参传入参数值
为形参指定默认值的语法格式如下:形参名 = 默认值
带默认值的参数必须处于没有默认值的参数的后面
使用参数默认值
对于有默认值的参数,调用函数时可省略为该参数指定参数值
如果要省略为前面的参数指定参数值,则需要用关键字参数为后面的参数指定参数值
普通参数收集(*xxx)
在形参前面添加一个星号(*),这样就意味着该参数可接收多个参数值,多个参数值被当成元组传入
参数收集的本质就是一个元组:Python会将传给带*参数的多个值收集成一个元组。
Python允许个数可变的形参可以处于形参列表的任意位置(不要求是形参列表的最后一个参数),但最多只能带一个支持“普通”参数收集的形参。
如果支持“普通”参数收集的形参位于前面,后面参数则需要使用关键字参数传值
注意点
如图,如果把参数收集放在其他参数前面,python会把传过来的值都收集成一个元组给 num 参数。
导致 books 这个参数没有值而报错
如果要支持“普通”参数收集的形参位于前面,后面参数则需要使用关键字参数传值
一个函数只能有一个普通参数收集的形参
关键字参数收集(**xxx)
在参数前面添加2个星号,该参数支持关键字参数收集,收集的参数被当成dict处理
一个函数可同时支持普通参数收集和关键字参数收集
逆向参数收集
逆向参数收集:在列表、元组前添加一个 *,在字典之前添加两个 **
即使是支持收集的参数,如果程序需要将一个元组传给该参数,同样需要使用逆向收集(否则整个元组被当成一个值)
注意点:
调用函数时,Python 不会对元组自动解包,默认情况下,元组是一个整体
*对元组进行解包(逆向参数收集)
列表作为参数
参数值多就不行了
dict(字典)的逆向参数收集
dict前添加两个**,这样字典就可逆向参数收集
字典将会以关键字参数的形式传入。