显然,如果在调用函数时需要同时使用关键字和位置参数,则必须首先使用位置参数。但是下面的代码会导致错误;
def greet(first_name, l_name):
print(f'Hi, {first_name} {last_name}!')
greet('Holmes',
first_name='Harry')
那么这是否意味着如果您同时使用两者,则必须首先按所需顺序使用位置参数,然后才使用关键字参数?
显然,如果在调用函数时需要同时使用关键字和位置参数,则必须首先使用位置参数。但是下面的代码会导致错误;
def greet(first_name, l_name):
print(f'Hi, {first_name} {last_name}!')
greet('Holmes',
first_name='Harry')
那么这是否意味着如果您同时使用两者,则必须首先按所需顺序使用位置参数,然后才使用关键字参数?
位置参数必须按照函数中声明的顺序传递。所以如果你传递三个位置参数,它们必须到函数的前三个参数,而这三个参数不能通过关键字传递。如果您希望能够按关键字无序传递第一个参数,则所有参数都必须按关键字传递(或者根本不传递,如果它们具有默认值)。
如果有帮助,Python的绑定机制大致是:
就您而言,这意味着:
greet('Holmes', first_name='Harry')
首先绑定'Holmes'
到first_name
. 然后它看到你试图first_name
再次作为关键字参数传递并反对。