我有这个代码:
import ctypes
import inspect
def fun():
c = 3
inspect.currentframe().f_locals['c'] = 4
ctypes.pythonapi.PyFrame_LocalsToFast(ctypes.py_object(inspect.currentframe()), ctypes.c_int(0))
print(c)
fun()
如果“运行”,输出将是:
>>> 4
但是使用“调试”和“print(c)”上的断点。 通过在控制台调用“print(c)”,输出将如下所示:
>>> 3
为什么会有不同的行为?这可以解决吗?
使用 PyDev 控制台 pycharm
就我而言,它的工作原理如下:
import ctypes
import inspect
def fun():
c = 3
ctypes.pythonapi.PyFrame_FastToLocals(ctypes.py_object(inspect.currentframe()))
inspect.currentframe().f_locals['c'] = 4
ctypes.pythonapi.PyFrame_LocalsToFast(ctypes.py_object(inspect.currentframe()), ctypes.c_int(0))
print(c)
fun()