提问人:Kazarin V. 提问时间:11/8/2023 更新时间:11/8/2023 访问量:28
为什么在调试和运行中有不同的行为?Pycharm+ 当地人
Why different behavior in debug and run? Pycharm+ locals
问:
我有这个代码:
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
但是带有“Debug”和“print(c)”上的断点。
通过调用控制台的“print(c)”,输出将如下所示:>>> 3
为什么有不同的行为?这可以解决吗?
使用 PyDev 控制台 pycharm
答:
1赞
Kazarin V.
11/8/2023
#1
就我而言,它的工作原理如下:
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()
评论
inspect
c
inspect