在python中获取函数名作为字符串[重复]

Posted

技术标签:

【中文标题】在python中获取函数名作为字符串[重复]【英文标题】:Get function name as a string in python [duplicate] 【发布时间】:2011-10-31 19:22:04 【问题描述】:

可能重复:How do I get the name of a function or method from within a Python function or method?How to get the function name as string in Python?

我有一个名为 func 的函数,我希望能够将函数名称作为字符串获取。

伪蟒蛇:

def func () :
    pass

print name(func)

这将打印 'func'。

【问题讨论】:

想知道函数的名称通常是设计欠佳的标志。为什么你想知道它被定义的名字?你将如何使用它?你知道函数是一个对象,并且可以像 Python 中的任何其他值一样对待吗? 在大多数情况下,我会同意你的看法。然而,在我的特殊情况下,我正在制作一个工具,可以打印出关于任意函数的某些信息。我想在打印输出中显示函数的名称。它没有任何形式的结构位置。 这并不总是坏事。例如,unittest 使用函数的名称来检测应该运行的函数。 【参考方案1】:

这很简单。

print func.__name__

编辑:但你必须小心:

>>> def func():
...     pass
... 
>>> new_func = func
>>> print func.__name__
func
>>> print new_func.__name__
func

【讨论】:

另外,一个方便的提示:使用dir 内置函数可以很容易地回答像您这样的简单问题。例如dir(func) 返回一个列表,'__name__' 作为其中一项。 +1 评论的答案【参考方案2】:

使用__name__

例子:

def foobar():
    pass

bar = foobar

print foobar.__name__   # prints foobar
print bar.__name__   # still prints foobar

有关使用 python 进行自省的概述,请查看http://docs.python.org/library/inspect.html

【讨论】:

【参考方案3】:

还有几种方法:

>>> def foo(arg):
...     return arg[::-1]
>>> f = foo
>>> f.__name__
'foo'
>>> f.func_name
'foo'
>>> f.func_code.co_name
'foo'

【讨论】:

以上是关于在python中获取函数名作为字符串[重复]的主要内容,如果未能解决你的问题,请参考以下文章

将变量名作为GD脚本中的字符串获取

数组名作为函数的参数属于啥传递为啥

用函数名作为字符串将 std::function 包装在类中

数组名作为函数参数.我编的这个错在那?

数组名作函数参数时,实参与形参变量之间的数据传递是?

将表名作为输入参数动态传递并使用它[重复]