Skip to content

Latest commit

 

History

History
57 lines (39 loc) · 1.19 KB

python函数声明中单独的正斜杠和星号是什么意思.md

File metadata and controls

57 lines (39 loc) · 1.19 KB

Python 函数声明中单独的正斜杠(/)和星号(*)是什么意思

last modify

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