python中的帧类型
Posted
技术标签:
【中文标题】python中的帧类型【英文标题】:frame type in python 【发布时间】:2014-02-28 14:29:56 【问题描述】:在python reference manual
中说过
代码块在执行帧中执行。一个框架包含一些 管理信息(用于调试)并确定在哪里 以及代码块执行后如何继续执行 完成。
和
Frame 对象表示执行帧。它们可能会发生 在回溯对象中
但我不明白框架是如何工作的。如何获得对当前框架对象的访问权限?什么时候创建框架对象?每次新块的代码开始执行时都会创建框架对象吗?
【问题讨论】:
【参考方案1】:这些帧是由函数调用创建的堆栈帧的表示。您不需要在正常编程中访问它们。每次调用函数时确实会创建一个新框架,并在它退出或引发未捕获的异常时销毁。由于函数调用可以深入很多层,因此您的程序最终会得到一堆嵌套的堆栈帧,但是即使 Python 确实使它们可用,也不是很好的编程习惯(除非您正在编写调试器或类似的应用程序)来弄乱这些帧.
【讨论】:
所以不清楚为什么在规范中定义了帧类型? 因为如果您想自动处理异常回溯,或者如果您想通过在函数内部调整调用命名空间来玩游戏,您需要能够访问系统的真实内容。因此,可以编写内省代码(例如)允许您在程序暂停时在当前执行函数的命名空间内运行 Python 语句,或显示调用堆栈的全部内容以供检查。它相当开放。 Python 3 的新breakpoint()
调用使需要帧变得更容易,并将它们传递给上下文。同样,sys.excepthook()
允许(例如)从生产服务器上的异常中保存帧,然后为 Slack 重新格式化它们,...以上是关于python中的帧类型的主要内容,如果未能解决你的问题,请参考以下文章