2014-01-14 133 views
2

我有以下功能:获取python函数的参数顺序?

def foo(a, b, c): 
    print "Hello" 

比方说,我知道它的存在,我知道这需要命名为A,B和C三个参数,但我不知道在哪个顺序。

我希望能够调用foo给像一本字典:

args = { "a": 1, "b" : 17, "c": 23 } 

有没有办法找出其中责令参数是要传递?

回答

9

你不需要;让Python为你解答:

foo(**args) 

这适用于你的字典作为关键字参数,这是完全合法的。您可以使用参数foo()以任意顺序当您使用关键字参数:

>>> def foo(a, b, c): 
...  print a, b, c 
... 
>>> foo(c=3, a=5, b=42) 
5 42 3 
>>> args = {'a': 1, 'b' : 17, 'c': 23} 
>>> foo(**args) 
1 17 23 

您仍然可以找出准确的顺序,使用inspect.getargspec() function

>>> import inspect 
>>> inspect.getargspec(foo) 
ArgSpec(args=['a', 'b', 'c'], varargs=None, keywords=None, defaults=None) 

但是,为什么有一只狗和树皮自己呢?