我知道它看起来很la脚,但是我想让一个函数能够访问其自己的名称,以打印错误或调试消息。这样就很容易有一种标准的方式开始打印输出:
print(__myname__,"is reporting the following..."
我宁愿每次都不必显式键入名称,因为我经常 想剪切并粘贴此类内容,我希望将任何名称更改都自动进行,因此更可靠。
这类似于another question,但我需要当前函数的名称,而不是其调用方的名称。
我注意到特殊名称
__name__
此位置报告的是程序包的名称,而不是函数的名称。
答案 0 :(得分:3)
您可以使用traceback
模块提取堆栈信息:
import traceback
def current_function_name():
return traceback.extract_stack()[-2][2]
def foo():
print current_function_name()
>>> foo()
foo