我无法理解堆栈帧和执行帧之间的差异,主要是关于traceback
和inspect
模块(在Python 3中)。
我认为它们是相同的,但文档暗示它们不是inspect
模块返回框架对象的方法,而traceback
模块的方法不是(即inspect.stack()
vs { {1}}。
从谷歌搜索,我知道堆栈帧是一个包含子程序状态信息(函数调用和参数数据)的数据结构。但是,根据文档,执行框架类似于:
执行框架包含一些管理信息(用于调试),确定在代码块执行完成后继续执行的位置和方式,并且(可能最重要的)定义两个名称空间,即本地名称空间和全局名称空间,这会影响代码块的执行。
那么堆栈帧和执行帧之间究竟有什么区别呢?