仅位置参数在Python 3.8中有什么作用?

时间:2019-06-27 16:32:10

标签: python python-3.x

下面的python代码做什么?

def pow(x, y, z=None, /):
    r = x**y
    if z is not None:
        r %= z
    return r

3 个答案:

答案 0 :(得分:0)

调用函数时,不能使用关键字参数指定仅位置参数的值。 pow(1, 2, 3)将起作用; pow(x=1, y=2, z=3)不会。

答案 1 :(得分:0)

PEP-0570中对此进行了很好的描述。如果禁止将命名参数用于标记为仅位置的参数:

>>> pow(x=5, y=3)
Traceback (most recent call last):
    File "<stdin>", line 1, in <module>
TypeError: pow() takes no keyword arguments

您只能像pow(5, 3)这样称呼它。

答案 2 :(得分:0)

它已经在Python 3.8的官方文档的Positional-only parameters中进行了定义。

  

有新的语法(/)表示必须在位置上指定某些函数参数(即,不能用作关键字参数)。这与用C实现的功能的help()表示的符号相同(由Larry Hastings的“ Argument Clinic”工具产生)。示例:

     

现在pow(2,10)和pow(2,10,17)是有效的调用,但是pow(x = 2,y = 10)和pow(2,10,z = 17)是无效的。

有关完整说明,请参见PEP 570