- 形参混用的顺序:位置形参、默认形参、*args、命名关键字形参、**kwargs
def func(x, y=111, *args, z, **kwargs):
print(x, y, args, z, kwargs)
func(1, 2, 3, 4, 5, z=6, a=7, b=8)
结果:
1 2 (3, 4, 5) 6 {'a': 7, 'b': 8}
- 实参混用的顺序:位置参数、*、关键字参数、**、关键字参数
def func(x, y, z, a, b, c):
print(x, y, z, a, b, c)
# 错误的
# func(11, y=22, *[33, 44], **{'b': 55, 'c': 66}) # *后打散成位置实参;**后打散成关键字实参
# func(11, y=22, 33, 44, b=55, c=66) # 关键字实参在位置实参前
func(11, *[33, 44], a=22, **{'b': 55, 'c': 66}) # 相当于:func(11, 33, 44, a=22, b=55, c=66)
func(1, *[3, 4], **{'b': 5, 'c': 6}, a=2) # 相当于:func(1, 3, 4, b=5, c=6, a=2)
结果:
11 33 44 22 55 66
1 3 4 2 5 6