我希望能够获得传递给函数的所有参数的字典。是否有一个包含Python中函数参数的字典?
def myfunc(param1, param2, param3):
print 'Param1=%(param1)s, Param2=%(param2)s Param3=%(param3)' % __method_param_dict__
所以我的问题是不字典method_param_dict存在,如果有的话是什么所谓。
感谢
我希望能够获得传递给函数的所有参数的字典。是否有一个包含Python中函数参数的字典?
def myfunc(param1, param2, param3):
print 'Param1=%(param1)s, Param2=%(param2)s Param3=%(param3)' % __method_param_dict__
所以我的问题是不字典method_param_dict存在,如果有的话是什么所谓。
感谢
一种特定示例解决方案:
def myfunc(param1, param2, param3):
dict_param = locals()
但一定要在this article看看对possiblities的完整解释(参数,kwargs,混合等)
你可以这样做:
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
如果您需要做的是,你应该使用*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
。
如果要接受可变参数,可以使用*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'}
你为什么需要它?你究竟想要完成什么? – SilentGhost
嗯......这是源代码。问题是什么? –