我希望能够获得传递给函数的所有参数的字典。
def myfunc( param1, param2, param3 ):
print 'Param1=%(param1)s, Param2=%(param2)s Param3=%(param3)' % __method_param_dict__
所以我的问题是字典 method_param_dict 是否存在,如果存在,它的名称是什么。
由于
答案 0 :(得分:7)
针对您的具体示例的解决方案:
def myfunc(param1, param2, param3):
dict_param = locals()
但请务必查看this article以获取有关可能性的完整解释(args,kwargs,mixed等...)
答案 1 :(得分:3)
如果您需要这样做,则应使用*args
和**kwargs
。
def foo(*args, **kwargs):
print args
print kwargs
foo(1,2,3,four=4,five=5)
# prints [1,2,3] and {'four':4, 'five':5}
使用locals()
也是一种可能性,允许你遍历位置参数的名称,但是你必须记住在定义范围内的任何新名称之前访问它,你应该知道它会包含self
方法。
答案 2 :(得分:1)
你可以这样做:
def myfunc(*args, **kwargs):
# Now "args" is a list containing the parameters passed
print args[0], args[1], args[2]
# And "kwargs" is a dictionary mapping the parameter names passed to their values
for key, value in kwargs.items():
print key, value
答案 3 :(得分:0)
如果您想接受变量参数,可以使用*args
和**kwargs
。
*args
是所有非关键字参数的列表。 **kwargs
是所有关键字参数的字典。所以:
def myfunc(*args, **kwargs):
if args:
print args
if kwargs:
print kwargs
>>> myfunc('hello', 'goodbye')
('hello', 'goodbye')
>>> myfunc(param1='hello', param2='goodbye')
{'param1': 'param2', 'param2': 'goodbye'}