假设这里有一简单的函数

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)