强制使用命名参数

函数签名中第一个星号后指定的所有参数都是仅关键字。

def f(*a, b):
    pass

f(1, 2, 3)
# TypeError: f() missing 1 required keyword-only argument: 'b'

在 Python 3 中,可以在函数签名中放置一个星号,以确保其余参数只能使用关键字参数传递。

def f(a, b, *, c):
    pass

f(1, 2, 3)
# TypeError: f() takes 2 positional arguments but 3 were given
f(1, 2, c=3)
# No error