Python 函数声明中单独的正斜杠(/)和星号(*)是什么意思
def func(a, /, b, *, c):
print(a, b, c)
func(1, 2, c=3) # ok
func(1, b=2, c=3) # ok
func(a=1, 2, 3) # err
/
规定了在其之前的参数都必须是 positional argument,而不能是 keyword argument;之后的不管,两种均可;*
规定了在其之后的参数都必须是 keyword argument,而不能是 positional argument;之前的不管,两种均可;当两者同时出现时,
/
必须在*
之前;
使用示例
def f1(a, b, c, /): # ok
pass
f1(1, 2, 3) # ok
f1(1, 2, c=3) # err
def f2(*, a, b, c): # ok
pass
f2(a=1, b=2, c=3) # ok
f2(1, b=2, c=3) # err
def f3(a, /, *, b): # ok
pass
f3(1, b=2) # ok
f3(1, 2) # err
f3(a=1, b=2) # err
def f4(a, /, b, *, c): # ok
pass
f4(1, 2, c=3) # ok
f4(1, b=2, c=3) # ok
f4(1, 2, c) # err
f4(a=1, b=2, c=3) # err
def f5(a, *, b, /, c): # err: invalid syntax
pass
Last updated