首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >获取python函数内部的参数名列表

获取python函数内部的参数名列表
EN

Stack Overflow用户
提问于 2009-02-24 14:56:43
回答 4查看 377.4K关注 0票数 340

可能重复:

Getting method parameter names in python

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

例如:

代码语言:javascript
运行
复制
def func(a,b,c):
    print magic_that_does_what_I_want()

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

谢谢

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-10-29 19:40:55

实际上,我们这里并不需要inspect

代码语言:javascript
运行
复制
>>> 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__

票数 409
EN

Stack Overflow用户

发布于 2009-02-24 15:03:39

locals()返回带有本地名称的字典:

代码语言:javascript
运行
复制
def func(a,b,c):
    print(locals().keys())

打印参数列表。如果您使用其他本地变量,这些变量将包含在此列表中。但是你可以在你的函数开始时复制一份。

票数 258
EN

Stack Overflow用户

发布于 2009-02-24 15:34:05

如果您还需要这些值,可以使用inspect模块

代码语言:javascript
运行
复制
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)]
票数 184
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/582056

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档