duke0522 发表于 2020-5-28 10:37:15

形参默认值的设定位置

本帖最后由 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:39:35

是的,这是铁律

heidern0612 发表于 2020-5-28 10:42:01

主要是*号会接收不确定参数,如果默认形参放在位置形参的前面,会导致接收混乱。

duke0522 发表于 2020-5-28 10:44:23

heidern0612 发表于 2020-5-28 10:42
主要是*号会接收不确定参数,如果默认形参放在位置形参的前面,会导致接收混乱。

*号会接收不确定参数,这句话是什么意思?

heidern0612 发表于 2020-5-28 10:45:56

本帖最后由 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]
查看完整版本: 形参默认值的设定位置