获取Python函数内的参数名称列表

可能重复:
在python中获取方法参数名称

是否有一个简单的方法是在一个Python函数内部并获取参数名称的列表?

例如:

def func(a,b,c): print magic_that_does_what_I_want() >>> func() ['a','b','c'] 

谢谢

如果您还想要使用inspect模块的值

 import inspect def func(a, b, c): frame = inspect.currentframe() args, _, _, values = inspect.getargvalues(frame) print 'function name "%s"' % inspect.getframeinfo(frame)[2] for i in args: print " %s = %s" % (i, values[i]) return [(i, values[i]) for i in args] >>> func(1, 2, 3) function name "func" a = 1 b = 2 c = 3 [('a', 1), ('b', 2), ('c', 3)] 

那么我们实际上并不需要在这里进行inspect

 >>> func = lambda x, y: (x, y) >>> >>> func.__code__.co_argcount 2 >>> func.__code__.co_varnames ('x', 'y') >>> >>> def func2(x,y=3): ... print(func2.__code__.co_varnames) ... pass # Other things ... >>> func2(3,3) ('x', 'y') >>> >>> func2.__defaults__ (3,) 

对于Python 2.5及func_code版本,请使用func_code而不是__code__ ,而使用func_code而不是__defaults__

locals() (文档为Python 2 , Python 3 )返回一个本地名字的字典:

 def func(a,b,c): print locals().keys() 

打印参数列表。 如果您使用其他本地variables,这些variables将包含在此列表中。 但是你可以在你的函数的开头做一个副本。

 import inspect def func(a,b,c=5): pass inspect.getargspec(func) # inspect.signature(func) in Python 3 (['a', 'b', 'c'], None, None, (5,))