如果我们想要指定特定的关键字参数作为只有关键字的参数,而不是位置参数,它们可以被声明在星号参数后。例如:
def total(initial=5, *numbers, extra_number): count = initial for number in numbers: count += number count += extra_number print(count) total(10, 1, 2, 3, extra_number=50) total(10, 1, 2, 3) # Raises error because we have not supplied a default argument value for 'extra_number'
输出:
66
Traceback (most recent call last):
File “keyword_only.py”, line 12, in <module>
total(10, 1, 2, 3)
TypeError: total() needs keyword-only argument extra_number
它是如何工作的:
在星号参数后面声明参数,结果是只有关键字参数,如果这些参数没有提供一个默认值,那么如果关键字参数没有提供值,函数调用会产生错误,如上所示。
注意,+=的用法是操作符的缩写,因此,x = x + y,你可以写成x += y。
如果你不需要星号参数,但还想使用只有关键字参数,那么只需简单使用一个星号而不使用任何名字,例如,def total(initial=5, *, extra_number)。