代码之家  ›  专栏  ›  技术社区  ›  sanyassh Khushboo Tahir

对象中的/是什么意思?[副本]

  •  0
  • sanyassh Khushboo Tahir  · 技术社区  · 5 年前

    这是什么意思 / 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.
    
                                            ...
    
    0 回复  |  直到 4 年前
        1
  •  17
  •   neotam    5 年前

    它意味着世界末日 positional only parameters 不能 用作关键字参数。在Python3.8之前,此类参数只能在C API中指定。

    这意味着 key __contains__ 只能通过位置传递( range(5).__contains__(3) ),而不是作为关键字参数( range(5).__contains__(key=3) ),你有什么事吗 可以

    还可以看到 Argument Clinic

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

    以及 Python FAQ :

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

    语法现在是Python语言规范的一部分, as of version 3.8 看见 PEP 570 – Python Positional-Only Parameters . 在PEP 570之前,该语法已经保留下来,以便将来可能包含在Python中,请参阅 PEP 457 - Syntax For Positional-Only Parameters .

    纯位置参数可以产生更清晰的API,使纯Python实现的纯C模块更加一致,更易于维护,而且因为纯位置参数只需要很少的处理,所以它们可以产生更快的Python代码。