没有位置参数的仅关键字参数
Keyword-only arguments without positional arguments
请解释这段突出显示的代码,尤其是方法定义所在的部分。
问题:
- 为什么Asterisk在Start上没有任何参数,在python中是什么意思。
- 调用函数“选择”前的星号是什么意思?
- 它如何强制 python 使用仅关键字参数?
我觉得图片解释的很清楚 qzite,但这里是一个简化版本:
*
结束位置参数。在 python 中,位置参数总是在关键字参数之前。
def test(a, v, b):
print(v)
test(3, v=7, 5) # illegal, kwargs have to be last (SyntaxError)
test(3, v=7, b=5) # legal
test(3, 7, 5) # legal
但是假设我们希望用户始终指定 v
和 b
,同时保留 a
位置。
def test(a, *, v, b):
print(v)
test(3, v=7, b=5) # legal
test(3, 7, 5) # illegal, takes one positional argument but 3 were given
test(3, 5, v=7, b=5) # illegal, 2 were given
请解释这段突出显示的代码,尤其是方法定义所在的部分。 问题:
- 为什么Asterisk在Start上没有任何参数,在python中是什么意思。
- 调用函数“选择”前的星号是什么意思?
- 它如何强制 python 使用仅关键字参数?
我觉得图片解释的很清楚 qzite,但这里是一个简化版本:
*
结束位置参数。在 python 中,位置参数总是在关键字参数之前。
def test(a, v, b):
print(v)
test(3, v=7, 5) # illegal, kwargs have to be last (SyntaxError)
test(3, v=7, b=5) # legal
test(3, 7, 5) # legal
但是假设我们希望用户始终指定 v
和 b
,同时保留 a
位置。
def test(a, *, v, b):
print(v)
test(3, v=7, b=5) # legal
test(3, 7, 5) # illegal, takes one positional argument but 3 were given
test(3, 5, v=7, b=5) # illegal, 2 were given