【发布时间】:2012-07-19 04:30:59
【问题描述】:
我想找到被调用的函数的名称......即调用函数的变量的名称。使用基本配方,即__name__、func_name,或检查基本堆栈对我不起作用。例如
def somefunc():
print "My name is: %s" % inspect.stack()[1][3]
a = somefunc
a()
# would output: out: "My name is: somefunc"
# whereas I want it to output: "My name is: a"
我的直觉说我可以做到,但我想不通。有没有蟒蛇大师?
【问题讨论】:
-
我怀疑这是可能的。您想这样做有什么特别的原因吗?
-
通常当人们问如何做这样的事情时,他们正在做一些非常糟糕的事情。你能澄清一下这将起到什么作用吗?
-
您可以更改 a 部分的 name,但我不明白您为什么要这样做。另外,请查看装饰器文档。
-
func_name在您创建函数时定义。a.func_name是somefunc。 -
不可能。一个函数只有一个规范名称,即用于构造它的名称(在
def语句中指定并存储在其func_name和__name__属性中)。您可以有任意数量的其他标识符指向它,但无法从函数内部分辨出哪个用于调用它。
标签: python introspection