-
蓝山帝景
是。这很简单,如果您忽略关键字参数,这是可行的:def manyArgs(*arg):
print "I was called with", len(arg), "arguments:", arg>>> manyArgs(1)I was called with 1 arguments: (1,)
>>> manyArgs(1, 2,3)I was called with 3 arguments: (1, 2, 3)如您所见,Python将为您提供一个包含所有参数的元组。对于关键字参数,需要接受它们作为单独的实际参数,如斯库尔米德尔的回答.
-
GCT1015
在展开后添加:您也可以发送多个键值args。def myfunc(**kwargs):
# kwargs is a dictionary.
for k,v in kwargs.iteritems():
print "%s = %s" % (k, v)myfunc(abc=123, efh=456)# abc = 123# efh = 456你可以把两者混合在一起:def myfunc2(*args, **kwargs):
for a in args:
print a for k,v in kwargs.iteritems():
print "%s = %s" % (k, v)myfunc2(1, 2, 3, banan=123)# 1# 2# 3# banan = 123必须按照该顺序声明和调用它们,即函数签名需要为*args、*kwargs,并按该顺序调用。
-
Qyouu
如果可以的话,Skurmedel的代码用于python 2;要使其适应python 3,请更改iteritems到items并在print..这可以防止像我这样的初学者碰到:AttributeError: 'dict' object has no attribute 'iteritems'和其他地方的搜索(例如。当尝试使用NetworkX的WITH_shp()时,错误“‘dict’对象没有属性‘iterems’”)为什么会发生这种情况。def myfunc(**kwargs):for k,v in kwargs.items():
print("%s = %s" % (k, v))myfunc(abc=123, efh=456)# abc = 123# efh = 456以及:def myfunc2(*args, **kwargs):
for a in args:
print(a)
for k,v in kwargs.items():
print("%s = %s" % (k, v))myfunc2(1, 2, 3, banan=123)# 1# 2# 3# banan = 123