首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Python方法签名中的正斜杠"/“是什么意思,如help(foo)所示?

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

Stack Overflow用户
提问于 2015-01-31 04:10:44
回答 1查看 12.3K关注 0票数 44

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

代码语言:javascript
运行
复制
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.

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-01-31 04:18:17

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

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

代码语言:javascript
运行
复制
# a, b are positional-only. e,f 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
票数 54
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28243832

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档