没有位置参数的仅关键字参数

Keyword-only arguments without positional arguments

请解释这段突出显示的代码,尤其是方法定义所在的部分。 问题:

  1. 为什么Asterisk在Start上没有任何参数,在python中是什么意思。
  2. 调用函数“选择”前的星号是什么意思?
  3. 它如何强制 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

但是假设我们希望用户始终指定 vb,同时保留 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