【发布时间】:2018-08-19 03:11:51
【问题描述】:
如何确定一个函数是使用函数名还是该函数的别名调用的?
我可以通过以下方式检查函数以从函数体内获取其名称:
import inspect
def foo():
print(inspect.stack()[0][3])
foo() # prints 'foo'
来源:Determine function name from within that function (without using traceback)
但是,如果我为函数设置别名并尝试相同的操作,我会得到原始函数名称(不是别名)
bar = foo
bar() # prints 'foo'
我希望能够做到以下几点:
def foo():
print(... some code goes here ...)
bar = foo
foo() # prints 'foo'
bar() # prints 'bar'
【问题讨论】:
-
无法保证用于调用您的函数的引用是从任何名称获得的。可能是
l = [foo]; l[0]()或sorted(some_list, key=l[0])。 -
这很好,我想在这种情况下
l[0]()应该打印l[0]。
标签: python python-3.x introspection