为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕的地10843 2019-06-17 15:48:48
可以将可变数量的参数传递给函数吗?类似于在C或C+中使用varargs:fn(a, b)fn(a, b, c, d, ...)
查看完整描述

3 回答

?
蓝山帝景

TA贡献1843条经验 获得超7个赞

是。

这很简单,如果您忽略关键字参数,这是可行的:

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将为您提供一个包含所有参数的元组。

对于关键字参数,需要接受它们作为单独的实际参数,如斯库尔米德尔的回答.


查看完整回答
反对 回复 2019-06-17
?
GCT1015

TA贡献1827条经验 获得超4个赞

在展开后添加:

您也可以发送多个键值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,并按该顺序调用。


查看完整回答
反对 回复 2019-06-17
?
Qyouu

TA贡献1786条经验 获得超11个赞

如果可以的话,Skurmedel的代码用于python 2;要使其适应python 3,请更改iteritemsitems并在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


查看完整回答
反对 回复 2019-06-17
  • 3 回答
  • 0 关注
  • 584 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信