可能重复:
Getting method parameter names in python
有没有一种简单的方法可以进入python函数并获得参数名列表?
例如:
def func(a,b,c):
print magic_that_does_what_I_want()
>>> func()
['a','b','c']
谢谢
发布于 2010-10-29 19:40:55
实际上,我们这里并不需要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,)
对于Python2.5和更早版本,请使用func_code
而不是__code__
,使用func_defaults
而不是__defaults__
。
发布于 2009-02-24 15:03:39
locals()
返回带有本地名称的字典:
def func(a,b,c):
print(locals().keys())
打印参数列表。如果您使用其他本地变量,这些变量将包含在此列表中。但是你可以在你的函数开始时复制一份。
发布于 2009-02-24 15:34:05
如果您还需要这些值,可以使用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)]
https://stackoverflow.com/questions/582056
复制相似问题