首页 > 解决方案 > Python `inspect.stack()` 返回在 REPL 中缺少`code_context` 的 FrameInfo 对象

问题描述

使用 Python 的 REPL/交互式提示时,返回的对象inspect.stack()总是.code_context设置为None.

从 .py 文件中执行的相同代码按预期在堆栈跟踪中逐行返回代码。

>>> import inspect
>>> print(inspect.stack()[0].code_context)
None

在 .py 文件中执行的相同代码打印:

['print(inspect.stack()[0].code_context)\n']

标签: pythonintrospection

解决方案


在此处发布来自@jasonharper 的评论作为答案。谢谢!

模块可以显示源代码的唯一方法是inspect代码是否来自它可以访问的文件。在交互式提示下键入的源代码一经解析就会被丢弃,根本无法inspect访问它。– @jasonharper


推荐阅读