为了账号安全,请及时绑定邮箱和手机立即绑定

Python:在Help()输出中,斜杠意味着什么?

Python:在Help()输出中,斜杠意味着什么?

牧羊人nacy 2019-07-08 12:28:23
Python:在Help()输出中,斜杠意味着什么?是什么/均数在Python3.4中help输出range在结束括号之前?>>> help(range)Help on class range in module builtins:class range(object)  |  range(stop) -> range object |  range(start, stop[, step]) -> range object |    |  Return a virtual sequence of numbers from start to stop by step.  |    |  Methods defined here:  |    |  __contains__(self, key, /)  |      Return key in self.  |    |  __eq__(self, value, /)  |      Return self==value.                                         ...
查看完整描述

3 回答

?
大话西游666

TA贡献1817条经验 获得超14个赞

它表示位置仅限参数,参数你不可能用作关键字参数。这些参数只能在CAPI中指定。

意思是key争论__contains__只能按位置传递(range(5).__contains__(3)),而不是作为关键字参数(range(5).__contains__(key=3)),一些你能,会,可以在纯python函数中处理位置参数。

也请参阅论证诊所文件:

若要在参数诊所中将所有参数标记为纯位置参数,请添加/在最后一个参数之后的一行上,缩进的参数行与参数行相同。

以及(最近添加的)Python常见问题:

函数参数列表中的斜杠表示它之前的参数仅为位置参数。位置参数是那些没有外部可用名称的参数。在调用一个只接受位置参数的函数时,将参数映射到仅基于其位置的参数。

还为将来可能包含在Python中的语法进行了定义,请参见佩普457-只定位参数的语法.

这个PEP最近已经恢复,并且已经接受纳入Python..由于Python3.8仍然处于alpha阶段,它可能在该版本中成为现实,或者在3.9中成为现实,这取决于它的速度参考实施可以最后确定。

只有位置参数才能带来更清晰、更清晰的API,使纯Python实现更一致和更易于维护,并且因为只使用位置参数所需的处理非常少,所以它们会导致更快的Python代码。


查看完整回答
反对 回复 2019-07-08
?
红糖糍粑

TA贡献1815条经验 获得超6个赞

我自己问了这个问题。)发现/最初是由Guido在这里.

备选方案:使用‘/’怎么样?它与“*”的意思是“关键字参数”相反,而‘/’并不是一个新字符。

然后他的建议.

呵呵。如果是这样的话,我的“/”提议就赢了:

 def foo(pos_only, /, pos_or_kw, *, kw_only): ...

我认为与此相关的文件是Pep 570..重述部分看起来不错。

重述

用例将决定在函数定义中使用哪些参数:

 def f(pos1, pos2, /, pos_or_kwd, *, kwd1, kwd2):

作为指导:

使用位置-仅当名称不重要或没有意义,并且只有少数参数将始终以相同的顺序传递。使用关键字-仅当名称有意义时,而函数定义通过对名称的显式定义更容易理解。


如果函数以/

def foo(p1, p2, /)

这意味着所有的函数参数都是位置的。


查看完整回答
反对 回复 2019-07-08
?
jeck猫

TA贡献1909条经验 获得超7个赞

任何现在遇到这种情况的人都可能有兴趣知道Pep 570(根据这个讨论帖子在纯Python函数定义中,这种语法是合法的。我不确定它是否会进入Python3.8,但很有可能出现这种情况。

查看完整回答
反对 回复 2019-07-08
  • 3 回答
  • 0 关注
  • 898 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信