def f(*, arg1, arg2):
print(arg1, arg2)
尝试调用一下这个函数:
f('1', '2')
然后报错:
TypeError: f() takes 0 positional arguments but 2 were given
f() 接受 0 个位置参数,但给出了 2 个。
如果把实参全去掉,然后调用,还是报错:
TypeError: f() missing 2 required keyword-only arguments: 'arg1' and 'arg2'
f() 缺少 2 个必需的 keyword-only 参数。
如果把形参名加上去,然后调用:
f(arg1='1', arg2='2')
成功!
用这种形式才能调用成功,并且必须指定全部参数的值。
或者通过创建一个 dict 来调用。
d = {'arg1': '1', 'arg2': '2'}
f(**d)