假设这里有一简单的函数#
1
2
|
def printf(first, second, third):
print(first, second)
|
位置参数#
位置参数指的是调用函数时,参数顺序相一致
1
2
|
printf(1, 2, 3)
print(4, 5, 6)
|
关键字参数#
关键字参数指使用键值对key=value这样的方式调用程序
1
|
printf(first=1, second=2, third=3)
|
需要注意的是,当你使用关键字参数这种传递方式后,该函数后续参数将不能使用位置参数这一形式进行传递,如:
1
2
|
printf(first=1, 2, 3) # 错误
printf(1, second=2, third=3) # 正确
|
即保证位置参数必须放在关键字参数前。类似的,若函数中含默认参数,则后续参数也必须为含默认参数的参数
1
2
3
4
5
|
def func(first, second=2, third): # 错误
pass
def func(first, second=2, third=3): # 正确
pass
|
除此之外,关键字参数的顺序可以打乱(位置参数顺序不可以改变):
1
|
printf(1, third=3, second=2) # 仍旧输出1, 2, 3
|
可变长位置参数*args#
1
2
3
4
5
6
7
|
def printf(*args):
print(args)
printf()
print(1)
print(1, 2)
print(1, 2, 3)
|
可变长关键字参数**kwargs#
1
2
3
4
5
6
|
def printf(**kwargs):
print(kwargs)
printf(name='Pony')
printf(age='40', weight=70)
|