2024-10-03 13:28:20 发布
网友
类似于在C或C++中使用VARARGS的方法:
fn(a, b) fn(a, b, c, d, ...)
如果可以的话,Skurmedel的代码是针对python 2的;要使其适应python 3,请将iteritems更改为items,并在print中添加括号。这可以防止像我这样的初学者碰到: AttributeError: 'dict' object has no attribute 'iteritems'并在其他地方搜索(例如Error “ 'dict' object has no attribute 'iteritems' ” when trying to use NetworkX's write_shp())为什么会发生这种情况。
iteritems
items
print
AttributeError: 'dict' object has no attribute 'iteritems'
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
添加到展开后:
您也可以发送多个键值参数。
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,并按此顺序调用。
是的。
这很简单,如果忽略关键字参数则有效:
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将给您一个包含所有参数的元组。
对于关键字参数,您需要将它们作为单独的实际参数接受,如Skurmedel's answer所示。
如果可以的话,Skurmedel的代码是针对python 2的;要使其适应python 3,请将
iteritems
更改为items
,并在print
中添加括号。这可以防止像我这样的初学者碰到:AttributeError: 'dict' object has no attribute 'iteritems'
并在其他地方搜索(例如Error “ 'dict' object has no attribute 'iteritems' ” when trying to use NetworkX's write_shp())为什么会发生这种情况。以及:
添加到展开后:
您也可以发送多个键值参数。
你可以把两者混合起来:
它们必须按此顺序声明和调用,即函数签名必须是*args,**kwargs,并按此顺序调用。
是的。
这很简单,如果忽略关键字参数则有效:
如您所见,Python将给您一个包含所有参数的元组。
对于关键字参数,您需要将它们作为单独的实际参数接受,如Skurmedel's answer所示。
相关问题 更多 >
编程相关推荐