Python shell中help()函数的响应格式

4
我有一个关于Python 3.6.2 IDLE在Windows上显示某些“help()”项目的问题。从文档中,我期望看到sum(iterable[, start])pow(x, y[, z]),但调用这些函数的帮助却显示为sum(iterable, start=0, /)pow(x, y, z=None, /),可能还有其他函数也是这样显示的。
我很好奇为什么他们要把描述符放在关键字形式下(当你调用这些函数时不能显式使用这个形式,因为这样会抛出一个“x takes no keyword arguments”的错误),但最重要的是,斜杠在那里是干什么用的?

1
“help()” 显示方法签名,文档使用不同的符号。 - mata
所以,斜杠意味着“我左边的所有参数都是位置参数,尽管某些具有默认值的可选参数可能被格式化为关键字参数。” - Patrick Dennis
1个回答

2

[在链接的答案中补充一些内容...]

在Python3中,可选参数的文档已经从方括号(例如 '[, start]',在docstring中默认给出)更改为直接给出默认值,例如 'start=0'。之后的某个时候(可能是3.4),在不允许通过关键字传递参数的C编码函数的签名中添加了'/'。在此之前,没有简单的方法可以发现这个事实,只能通过尝试和异常来解决。(我相信有一些可选参数没有默认值。这些必须继续使用方括号。)

所有这些都与IDLE无关,因为IDLE打印帮助()输出就像接收到的那样。这就是为什么我删除了标签。然而,对于当前的3.6和3.7版本,IDLE在签名包含'/'时会将以下内容添加到工具提示中。

['/' marks preceding arguments as positional-only]

我不确定help()是否应该执行相同的操作。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接