python 个位置参数
python positional arguments
我正在尝试了解此 function
的参数是如何解释的:
def f(a, *, b):
return a, b
这 function
似乎强制调用者使用恰好 2 个参数调用 f()
,第二个参数应始终是命名的 b=
参数。我如何从 function
签名中破译这个?为什么不允许我为 *
指定中间参数?
How do I decipher this from the function signature?
- 必须传递没有默认值的参数。
*
之后的参数如果被传递,则必须通过关键字传递。
- 除非参数名称伴随
*
. ,否则无法将额外参数传递给 "fill up" 和 *
由于 b
没有默认值,因此必须传递它。由于它在 *
之后,因此必须通过关键字传递。由于 *
是 "bare"(即,它只是 *
占位符,而不是像 *args
这样的可变参数),没有其他位置参数可以作为 [=34= 传递] 参数。
有关仅关键字参数语法的说明,请参阅 PEP 3102。
单独的 *
是一种仅 Python3 的方式来表示以下参数是命名参数并且只能传递给函数。
Parameters after “*
” or “*identifier
” are keyword-only parameters and may only be passed used keyword arguments.
我正在尝试了解此 function
的参数是如何解释的:
def f(a, *, b):
return a, b
这 function
似乎强制调用者使用恰好 2 个参数调用 f()
,第二个参数应始终是命名的 b=
参数。我如何从 function
签名中破译这个?为什么不允许我为 *
指定中间参数?
How do I decipher this from the function signature?
- 必须传递没有默认值的参数。
*
之后的参数如果被传递,则必须通过关键字传递。- 除非参数名称伴随
*
. ,否则无法将额外参数传递给 "fill up" 和
*
由于 b
没有默认值,因此必须传递它。由于它在 *
之后,因此必须通过关键字传递。由于 *
是 "bare"(即,它只是 *
占位符,而不是像 *args
这样的可变参数),没有其他位置参数可以作为 [=34= 传递] 参数。
有关仅关键字参数语法的说明,请参阅 PEP 3102。
单独的 *
是一种仅 Python3 的方式来表示以下参数是命名参数并且只能传递给函数。
Parameters after “
*
” or “*identifier
” are keyword-only parameters and may only be passed used keyword arguments.