Python3 如何实现指定函数每次被调用时的全调用链溯源打印
解决方法
你只需修改four.py中的myFunction函数,引入Python内置的调试模块打印调用栈即可实现需求,无需改动其他业务文件代码。
方案1:直接打印完整栈信息(最便捷)
使用内置traceback模块直接输出标准调用栈:
# four.py import traceback def myFunction(): print("=== 本次调用的完整调用链 ===") traceback.print_stack() # 原有业务逻辑保留 print("trace of which functions called me, back to original.")
方案2:自定义格式化输出
如果需要提取调用链的关键字段自定义排版,可使用inspect模块实现:
# four.py import inspect def myFunction(): print("=== 本次调用的完整调用链 ===") # 遍历栈帧,跳过当前函数自身的栈帧 for index, frame in enumerate(inspect.stack()[1:], start=1): print(f"第{index}层:文件[{frame.filename}],行号[{frame.lineno}],触发函数[{frame.function}]") # 原有业务逻辑保留 print("trace of which functions called me, back to original.")
效果说明
两种方案都会在每次myFunction被调用时输出全链路调用信息,包含触发调用的脚本路径、所在行号、所属函数,你可以直接对比每次调用的来源,快速定位到多余的异常调用位置。
内容的提问来源于stack exchange,提问作者CodeMed
相关产品推荐
相关产品推荐

