是否有一个包含Python中函数参数的字典?

时间:2009-10-14 14:59:49

标签: python

我希望能够获得传递给函数的所有参数的字典。

def myfunc( param1, param2, param3 ):
    print 'Param1=%(param1)s, Param2=%(param2)s Param3=%(param3)' % __method_param_dict__

所以我的问题是字典 method_param_dict 是否存在,如果存在,它的名称是什么。

由于

4 个答案:

答案 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'}