可以将可变数量的参数传递给函数吗?

可以将可变数量的参数传递给函数吗?

类似于在C或C+中使用varargs:

fn(a, b)fn(a, b, c, d, ...)


慕的地10843
浏览 585回答 3
3回答

蓝山帝景

是。这很简单,如果您忽略关键字参数,这是可行的: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
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python