*在Python中和在C中一样有特殊含义吗?我在Python Cookbook中看到了这样一个函数:
def get(self, *a, **kw)
请你给我解释一下,或者指出我在哪里可以找到答案(谷歌将*解释为通配符,因此我找不到满意的答案).
*在Python中和在C中一样有特殊含义吗?我在Python Cookbook中看到了这样一个函数:
def get(self, *a, **kw)
请你给我解释一下,或者指出我在哪里可以找到答案(谷歌将*解释为通配符,因此我找不到满意的答案).
参见语言参考中的Function Definitions.
如果表格
*identifier
是
另请参见Function Calls.
假设知道位置参数和关键字参数是什么,下面是一些示例:
例1:
# Excess keyword argument (python 2) example:
def foo(a, b, c, **args):
print "a = %s" % (a,)
print "b = %s" % (b,)
print "c = %s" % (c,)
print args
foo(a="testa", d="excess", c="testc", b="testb", k="another_excess")
正如您在上面的示例中所看到的,foo
函数的签名中只有参数a, b, c
.由于d
和k
不存在,它们被放入args字典.该程序的输出为:
a = testa
b = testb
c = testc
{'k': 'another_excess', 'd': 'excess'}
示例2:
# Excess positional argument (python 2) example:
def foo(a, b, c, *args):
print "a = %s" % (a,)
print "b = %s" % (b,)
print "c = %s" % (c,)
print args
foo("testa", "testb", "testc", "excess", "another_excess")
这里,因为我们正在测试位置参数,多余的参数必须在末尾,*args
个将它们打包成一个元组,所以这个程序的输出是:
a = testa
b = testb
c = testc
('excess', 'another_excess')
您还可以将字典或元组解压缩为函数的参数:
def foo(a,b,c,**args):
print "a=%s" % (a,)
print "b=%s" % (b,)
print "c=%s" % (c,)
print "args=%s" % (args,)
argdict = dict(a="testa", b="testb", c="testc", excessarg="string")
foo(**argdict)
输出:
a=testa
b=testb
c=testc
args={'excessarg': 'string'}
和
def foo(a,b,c,*args):
print "a=%s" % (a,)
print "b=%s" % (b,)
print "c=%s" % (c,)
print "args=%s" % (args,)
argtuple = ("testa","testb","testc","excess")
foo(*argtuple)
输出:
a=testa
b=testb
c=testc
args=('excess',)