社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

在每个python数学模块函数中找到/的含义是什么?[复制品]

Carl_M • 5 年前 • 1584 次点击  

什么是 / python 3.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.

                                        ...
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/43843
 
1584 次点击  
文章 [ 2 ]  |  最新文章 5 年前
prosti
Reply   •   1 楼
prosti    5 年前

我自己也问过这个问题。:)发现 / 最初是由Guido提出的 here .

备选方案:使用“/”怎么样?正好相反 “*”表示“关键字参数”,而“/”不是新字符。

那么他的建议 won .

呵呵。如果这是真的,我的“/”建议会赢:

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

我认为与此相关的文件是 PEP 570 . 这里的总结部分看起来不错。

扼要重述

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

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

作为指导:

仅当名称无关紧要或没有意义,并且只有少数参数将始终按相同顺序传递时,才使用位置。 仅当名称有意义且函数定义更易于理解时才使用关键字。


如果函数以 /

def foo(p1, p2, /)

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

Martijn Pieters
Reply   •   2 楼
Martijn Pieters    6 年前

它意味着 positional only parameters ,参数 不能 用作关键字参数。这样的参数只能在C API中指定。

这意味着 key 论证 __contains__ 只能通过位置传递( range(5).__contains__(3) ),而不是作为关键字参数( range(5).__contains__(key=3) ),一些你 可以 在纯python函数中使用位置参数。

也看到 Argument Clinic 文档:

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

以及 Python FAQ :

函数的参数列表中的斜线表示其前面的参数仅为位置参数。仅位置参数是没有外部可用名称的参数。调用只接受位置参数的函数时,参数将仅基于其位置映射到参数。

还为将来可能包含在python中定义了语法,请参见 PEP 457 - Syntax For Positional-Only Parameters .

这股精神最近恢复了,并且 accepted for inclusion in Python . 由于python 3.8仍处于alpha阶段,因此在该版本中或在3.9中它可能成为现实,这取决于速度 the reference implementation 可以敲定。

只有位置的参数可以导致更干净和更清晰的API,使纯的Python实现,否则只有C的模块更一致和更容易维护,并且因为位置参数只需要很少的处理,它们导致更快的Python代码。