根据docs:
inspect.currentframe()
返回调用者堆栈的框架对象
框架。
CPython实现细节:该函数依赖于Python堆栈
解释器中的框架支持,不保证存在于
Python 的所有实现。如果在没有的实现中运行
Python 堆栈框架支持此函数返回 None。
怎么只有这个函数被标记为“依赖于实现”?如果这个功能不起作用,类似的功能也不起作用,例如inspect.trace
, inspect.stack
等也无法使用?
另外,“堆栈框架支持”是什么意思,为什么它会缺失?
的可用性inspect.currentframe
与sys._getframe
:
def currentframe():
"""Return the frame of the caller or None if this is not possible."""
return sys._getframe(1) if hasattr(sys, "_getframe") else None
因此,该限制适用于也使用sys._getframe
. For inspect
,这只是inspect.stack
.
相比之下,inspect.trace
uses sys.exc_info
。这是异常处理方案的一个组成部分,并且应该始终可用。所有其他相关功能,例如getframeinfo
,已经依赖于有一个框架。它们的适用性取决于您是否想要检查异常或调用回溯。
请注意,我本地的默认 jythondoes支持sys._getframe
。如果运行 ipy 则可以工作-X:Frames
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)