2

我有一个扩展类bdb.Bbd,用于分析 Python 3 代码。现在,我还需要在程序逐步执行时修改一些变量值。

在函数之外,我可以通过修改frame.f_locals字典来做到这一点:

frame.f_locals['x'] = 2

如果不使用这个ctypes问题中提到的技巧,我无法弄清楚如何在函数内部执行此操作。我在Pyodide中运行 Python 3,不幸的是它还不支持。ctypes

4

1 回答 1

2

应该可以按如下方式进行。定义一个 Javascript 函数:

function frameLocalsToFast(frame){
   pyodide._module._PyFrame_LocalsToFast(frame.$$.ptr, 0);
   // Hopefully avoid memory leak
   frame.destroy();
}

然后导入frameLocalsToFastPython 并在您想要更新框架时调用它。

于 2021-03-12T07:50:25.490 回答