python源码,_getframe函数的应用?

栈帧对象 PyFrameObject 中保存着 Python 运行时信息,在底层执行流控制以及程序调试中非常有用。那么,在 Python 代码层面,有没有办法获得栈帧对象呢?答案是肯定的。调用标准库 sys 模块中的 _getframe 函数,即可获得当前栈帧对象

上面是讲python源码的资料,这里说的在底层执行流控制,什么意思呢?高手 们能举例说明下应用场景吗?说在程序调试中非常有用,我也没有体会。可具体说说吗?


回答:

python源码,_getframe函数的应用?

每当发生函数调用就会创建一个栈桢入栈,函数调用结束则栈桢出栈。

如下图,左侧红圈是PyCharm的添加断点调试时的Frames,右侧是代码中sys._getframe()获取的栈桢。发生异常时,通常会将栈中所有数据输出到日志,这样很方便最终到那个函数出现异常。而当前栈桢中,存放着与当前函数所有相关的数据。


本文参与了SegmentFault 思否面试闯关挑战赛,欢迎正在阅读的你也加入。

以上是 python源码,_getframe函数的应用? 的全部内容, 来源链接: utcz.com/p/938623.html

回到顶部