在 Python 中,可以通过 traceback 模块中的函数获取函数被调用时的调用栈信息。具体来说,可以使用 traceback.extract_stack() 函数获取当前调用栈信息,然后通过遍历调用栈信息找到上层调用的函数信息,即可获取函数被哪个函数调用了。
import traceback
def func1():
caller_name = traceback.extract_stack()[-2][2]
print("func1 被 {} 调用".format(caller_name))
def func2():
func1()
def func3():
func2()
func3() # 输出 func1 被 func2 调用
需要注意的是,这种方法只能获取当前函数在调用栈的上层函数信息,如果上层函数还有更上层调用者,则需要通过遍历调用栈信息逐层查找,直至找到最顶层的调用者。