我对使用python进行实验感兴趣。我知道我可以使用frame.f_locals
和frame.f_globals
检查并将局部变量和全局变量注入到框架中,但我现在想要创建一个完整的调用堆栈。
让我不仅仅是更改堆栈信息的原因是python不允许我更改它。
我实际上已经考虑过以编程方式转换我正在使用的python模块,以便模拟卷绕堆栈。但我知道这是一个糟糕的解决方案,因为if
,while
,with
和try
的客户端代码使用很容易破坏我的代码。
我也看过操纵frame.f_back
,但无济于事。它是只读的。
>>> import sys
...
... frm = sys._getframe()
...
... frm.f_back = None
Traceback (most recent call last):
File "<pyshell#4>", line 5, in <module>
frm.f_back = None
TypeError: readonly attribute
作为一项实验,我正在尝试通过网络实施fork()
。
我知道无堆栈python可能有我想要的东西,但仍然无法改变frame.f_back
属性。
答案 0 :(得分:1)
查看在线Python导师(http://www.pythontutor.com/)。它的作用是在执行期间捕获帧以创建python代码的可视化。所以,你可以使用捕获的帧。
答案 1 :(得分:0)
>>> type(sys._getframe())()
TypeError: cannot create 'frame' instances
对不起。
答案 2 :(得分:0)