假设知道位置和关键字参数是什么,下面是一些示例:
范例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 argsfoo(a="testa", d="excess", c="testc", b="testb", k="another_excess")
如你在上面的示例中所见,函数
a, b, c签名中仅包含参数
foo。由于d和k不存在,因此将它们放入
args字典。该程序的输出为:
a = testab = testbc = 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 argsfoo("testa", "testb", "testc", "excess", "another_excess")在这里,由于我们正在测试位置参数,因此多余的参数必须在最后,并将
*args它们打包成一个元组,因此该程序的输出为:
a = testab = testbc = 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=testab=testbc=testcargs={'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=testab=testbc=testcargs=('excess',)


