spect.currentframe() 在某些实现下可能不起作用?

2023-12-11

根据docs:

inspect.currentframe()

返回调用者堆栈的框架对象 框架。

CPython实现细节:该函数依赖于Python堆栈 解释器中的框架支持,不保证存在于 Python 的所有实现。如果在没有的实现中运行 Python 堆栈框架支持此函数返回 None。

怎么只有这个函数被标记为“依赖于实现”?如果这个功能不起作用,类似的功能也不起作用,例如inspect.trace, inspect.stack等也无法使用?

另外,“堆栈框架支持”是什么意思,为什么它会缺失?


的可用性inspect.currentframesys._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(使用前将#替换为@)

spect.currentframe() 在某些实现下可能不起作用? 的相关文章

随机推荐