Python获取当前函数名称的方法有很多种,这里分享三种常见的方法。
方法一
可以使用内置的inspect
模块获取当前所在函数的名称。
import inspect
def foo():
print(inspect.stack()[0][3])
foo()
运行上述代码,可以输出当前所在函数foo
的名称。
inspect.stack
函数会返回当前调用栈的帧列表。其中,列表的第一个元素表示当前位置的帧对象,可以使用第一个元素中的function
属性获取当前所在函数的名称。需要注意的是,这种方法的效率较低,不建议在生产环境中大量使用。
方法二
可以使用traceback
模块获取当前所在函数的名称。
import traceback
def foo():
print(traceback.extract_stack(None, 2)[0][2])
foo()
运行上述代码,可以输出当前所在函数foo
的名称。这种方法和inspect
模块类似,也是获取当前调用栈的帧列表,只不过这里使用了traceback.extract_stack
函数,并且过滤掉了外部两层的调用栈,以获取当前所在函数的帧对象。
方法三
可以使用__code__
属性获取当前函数的代码对象,并从代码对象中获取函数名称。
def foo():
print(foo.__code__.co_name)
foo()
运行上述代码,可以输出当前所在函数foo
的名称。这种方法比较简单,并且效率较高,适合在生产环境中使用。
示例演示:
import inspect
import traceback
def func1():
print(inspect.stack()[0][3])
print(traceback.extract_stack(None, 2)[0][2])
print(func1.__code__.co_name)
def func2():
print(inspect.stack()[0][3])
print(traceback.extract_stack(None, 2)[0][2])
print(func2.__code__.co_name)
func1()
func2()
运行上述代码,可以输出当前所在函数func1
和func2
的名称。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python获取当前函数名称方法实例分享 - Python技术站