我有一个看起来像这样的方法:
def order_by(*args):
print list(args)
有没有办法可以传递三个项目的列表,并将列表中的每个项目作为单独的参数传递?
params = ['a', 'b', 'c']
等同于
order_by('a', 'b', 'c')
有什么想法吗?
答案 0 :(得分:4)
*arguments
语法也可用于调用函数,前提是params
是可迭代的:
order_by(*params)
请参阅calls syntax specification。
对于实际字典,请使用**kwargs
语法:
params = dict(a='a', b='b', c='c')
somemethod(**params)
其中somemethod
接受a
,b
和c
个参数,或者有**kw
catch-all参数。请注意,如果您的所有函数定义的是**params
位置参数catch-all,则*args
不可以正常工作。
答案 1 :(得分:-3)
使用内置的apply
:
apply(order_by, params)