形参默认值的设定位置
本帖最后由 duke0522 于 2020-5-28 10:39 编辑def describePet(animalType='dog', petName):
如果这样设置形参的默认值,就会报错,SyntaxError: non-default argument follows default argument
def describePet(petName, animalType='dog'):
但是如果把有默认值的形参放在最后,就不会报错。
describePet(animalType='hamster', petName='harry')
当然,我调用的时候采用的是关键字实参。
难道有默认值的形参必须放在最后吗? 是的,这是铁律 主要是*号会接收不确定参数,如果默认形参放在位置形参的前面,会导致接收混乱。 heidern0612 发表于 2020-5-28 10:42
主要是*号会接收不确定参数,如果默认形参放在位置形参的前面,会导致接收混乱。
*号会接收不确定参数,这句话是什么意思? 本帖最后由 heidern0612 于 2020-5-28 10:48 编辑
duke0522 发表于 2020-5-28 10:44
*号会接收不确定参数,这句话是什么意思?
def func(*kwargs.**kwargs):
*args : 普通收集参数
**kwargs :关键字收集参数集
定义函数时,def func(*args,**kwargs)
args这个参数负责收集没人要的普通参数,构成一个元组(tuple)
kwargs这个参数负责收集关键字参数,构成一个字典(dict)
使用调用函数时,func(*args,**kwargs),args解包元组,传进函数做参数,kwargs解包字典,传进函数做参数。
页:
[1]