gpt4 book ai didi

python - Python方法签名中的正斜杠 "/"是什么意思,如help(foo)所示?

转载 作者:IT老高 更新时间:2023-10-28 20:29:00 27 4
gpt4 key购买 nike

help(foo)交互返回的签名中,/是什么意思?

In [37]: help(object.__eq__)

Help on wrapper_descriptor:

__eq__(self, value, /)
Return self==value.

In [55]: help(object.__init__)

Help on wrapper_descriptor:

__init__(self, /, *args, **kwargs)
Initialize self. See help(type(self)) for accurate signature.

我认为它可能与仅关键字参数有关,但事实并非如此。当我使用仅关键字参数创建自己的函数时,位置参数和仅关键字参数由 * 分隔(如预期的那样),而不是由 / 分隔。 / 是什么意思?

最佳答案

如解释 here ,作为参数的 / 标记仅位置参数的结束(参见 here ),即不能用作关键字参数的参数。在 __eq__(self, value,/) 的情况下,斜杠位于末尾,这意味着所有参数仅在 __init__ 的情况下被标记为位置只有 self ,即什么都没有,只是位置。

编辑:这以前只用于内置函数,但 since Python 3.8 ,您可以在自己的函数中使用它。 / 的自然伴侣是 *,它允许标记仅关键字参数的开头。 Example using both :

# a, b are positional-only
# c, d are positional or keyword
# e, f are keyword-only
def f(a, b, /, c, d, *, e, f):
print(a, b, c, d, e, f)

# valid call
f(10, 20, 30, d=40, e=50, f=60)

# invalid calls:
f(10, b=20, c=30, d=40, e=50, f=60) # b cannot be a keyword argument
f(10, 20, 30, 40, 50, f=60) # e must be a keyword argument

关于python - Python方法签名中的正斜杠 "/"是什么意思,如help(foo)所示?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28243832/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com