You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python3:如何检查函数是否被其他函数调用?

在Python 3中检测函数的调用者

当然可以实现这个需求!Python的inspect模块能帮我们获取调用栈的详细信息,这样就能轻松判断函数y是被哪个函数调用的了。

直接上实现代码:

import inspect

def x():
    y()

def y():
    # 获取当前调用栈,栈的第0个元素是y自身,第1个是调用y的函数帧
    caller_frame = inspect.stack()[1]
    # 获取调用者的函数名
    caller_name = caller_frame.function

    if caller_name == 'x':
        print("function y was called by another function")
    else:
        print("function y was not called by another function")

# 测试调用
x()  # 输出: function y was called by another function
y()  # 输出: function y was not called by another function

补充说明:

  • inspect.stack()会返回一个栈帧对象的列表,每个元素代表调用栈中的一层。[1]对应的就是直接调用当前函数的那一层。
  • 如果担心性能问题(因为获取调用栈会有一定开销),也可以给y函数加一个可选参数来传递调用者信息,比如:
def x():
    y(caller='x')

def y(caller=None):
    if caller == 'x':
        print("function y was called by another function")
    else:
        print("function y was not called by another function")

这种方法更高效,但需要调用者主动传递信息,灵活性不如inspect的方法。

内容的提问来源于stack exchange,提问作者user9613667

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 08:51:29