函数参数中没有星号?

函数参数中没有星号?

函数参数中的简单星号是做什么的?

当我查看泡菜模块时,我看到了以下内容:(http:/docs.python.org/3.3/Library/泡菜.html#泡菜.dump)

pickle.dump(obj, file, protocol=None, *, fix_imports=True)

我知道前面有一个星号和两个星号(对于可变的参数),但这是没有先例的。我敢肯定这和泡菜无关。这可能只是发生这种情况的一个例子。当我把这个发给翻译时,我才知道它的名字:

>>> def func(*):...     pass...
  File "<stdin>", line 1SyntaxError: named arguments must follow bare *

如果有关系,我使用python3.3.0。


largeQ
浏览 573回答 3
3回答

紫衣仙女

def&nbsp;func(*,&nbsp;a,&nbsp;b): &nbsp;&nbsp;&nbsp;&nbsp;print(a) &nbsp;&nbsp;&nbsp;&nbsp;print(b)func("gg")&nbsp;#&nbsp;TypeError:&nbsp;func()&nbsp;takes&nbsp;0&nbsp;positional&nbsp;arguments&nbsp;but&nbsp;1&nbsp;was&nbsp;givenfunc(a="gg")&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;TypeError:&nbsp;func()&nbsp;missing&nbsp;1&nbsp;required&nbsp;keyword-only&nbsp;argument:&nbsp;'b'func(a="aa",&nbsp;b="bb",&nbsp;c="cc") &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;TypeError:&nbsp;func()&nbsp;got&nbsp;an&nbsp;unexpected&nbsp;keyword&nbsp;argument&nbsp;'c'func(a="aa",&nbsp;b="bb",&nbsp;"cc")&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;SyntaxError:&nbsp;positional&nbsp;argument&nbsp;follows&nbsp;keyword&nbsp;argumentfunc(a="aa",&nbsp;b="bb")&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;aa,&nbsp;bb上面的例子是*kwargsdef&nbsp;func(*,&nbsp;a,&nbsp;b,&nbsp;**kwargs): &nbsp;&nbsp;&nbsp;&nbsp;print(a) &nbsp;&nbsp;&nbsp;&nbsp;print(b) &nbsp;&nbsp;&nbsp;&nbsp;print(kwargs)func(a="aa",b="bb",&nbsp;c="cc")&nbsp;#&nbsp;aa,&nbsp;bb,&nbsp;{'c':&nbsp;'cc'}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python