参数为*的Python函数:def blah(x,*,y)

2024-04-26 05:05:35 发布

您现在位置:Python中文网/ 问答频道 /正文

我在查看grammar rules for python 3.3时发现,星号可以单独出现,后跟逗号和1个或多个附加参数声明。我没有发现任何关于这个的讨论/问题,所以我想我应该发布我找到的问题和答案。你知道吗

示例代码:

def test1( *, y ) :
  print( "blah" )

def test2( x, *, y ) :
  print( "stuff" )

test1()  # error: missing 1 required keyword-only argument
test2()  # error: missing 1 required positional argument
test2(1) # error: missing 1 required keyword-only argument
test2(1, y=1) # prints "stuff"

Tags: onlyfordefrequirederror星号argumentkeyword
1条回答
网友
1楼 · 发布于 2024-04-26 05:05:35

documentation for function definitions只包含一个句子,没有过多强调这个特殊的细微差别:

Parameters after “*” or “*identifier” are keyword-only parameters and may only be passed used keyword arguments.

简而言之,这允许您在不指定默认值的情况下创建命名/关键字参数。此外,在指定为*arg的参数出现后,其后的任何参数(不带星号)都将是命名/关键字参数。你知道吗

相关问题 更多 >