为什么调试和运行时的行为不同? Pycharm+本地化

问题描述 投票:0回答:1

我有这个代码:

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

python pycharm pydev local-variables
1个回答
0
投票

就我而言,它的工作原理如下:

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()
© www.soinside.com 2019 - 2024. All rights reserved.