获取python函数中的参数名列表

2024-04-25 19:30:15 发布

您现在位置:Python中文网/ 问答频道 /正文

Possible Duplicate:
Getting method parameter names in python

有没有一种简单的方法可以进入python函数并获取参数名列表?

例如:

def func(a,b,c):
    print magic_that_does_what_I_want()

>>> func()
['a','b','c']

谢谢


Tags: 方法函数in列表参数parameternamesdef
3条回答

^{}返回具有本地名称的字典:

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

打印参数列表。如果使用其他局部变量,这些变量将包含在此列表中。但你可以在开始你的工作时复印一份。

如果还需要值,可以使用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)]

其实我们不需要这里。

>>> 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而不是__code__,使用func_defaults而不是__defaults__

相关问题 更多 >