在Spyder的变量资源管理器中查看局部变量

15 投票
2 回答
43453 浏览
提问于 2025-04-18 13:43

我刚开始学习Python,正在使用Spyder这个开发环境。我特别喜欢它的变量浏览器功能。不过,根据我做的一些研究,我发现它只显示全局变量。我找到一个解决办法,就是使用inspect模块:

import inspect

local_vars = {}

def main():
    global local_vars
    a = 2
    b = 4
    c = a+b
    local_vars = inspect.currentframe().f_locals
    return c

main()

这个方法效果不错,但我还有其他函数是从main()里面调用的,我也想在变量浏览器中看到那些变量。我模仿了main函数里的变量做法,但字典(dict)没有出现。我注意到,当我在Spyder的变量浏览器选项中关闭“排除不支持的数据类型”这个设置时,第二个字典出现了,并且大小属性也对了,但我无法打开或查看它。有没有什么解决办法?这是我第一次发帖,顺便说一下。

谢谢!!


这是我问题的一个工作示例,我追踪到是pylab的子图(subplots)造成的。

import inspect, pylab

mainVars = {}

def main():
    global mainVars

    a = 1
    b = 2

    fig = pylab.figure()
    subPlot = fig.add_subplot(211)    ## line of interest

    pylab.close('all')

    mainVars = inspect.currentframe().f_locals

main()

当我注释掉那行代码时,字典成功创建并且可以查看。看起来使用fig.add_subplot()创建的对象没有被字典正确处理,似乎是一个不支持的数据类型。

希望这能帮助澄清问题。

再次感谢。

2 个回答

4

这些变通方法让你的代码对外行人来说变得很难理解。你有两个选择可以查看函数内部变量的值。首先,你可以直接返回你感兴趣的变量:

def main():
    a = 2
    b = 4
    c = a+b

    return a, b, c

a, b, c = main()

其次,如果你只是想确认这个函数是否按预期工作,或者想调试它,你可以调试这个函数,逐步执行。这样,你可以从菜单中选择“运行|调试”,而不是直接运行文件。然后你可以进入这个函数,当执行到函数内部时,变量的值会在变量查看器中显示出来。

14

要查看本地变量的内容,即使有些变量不被支持,你需要按照以下步骤操作:

  1. 打开变量浏览器的选项菜单(在它的最右边的图标)。

  2. 选择一个叫做 排除不支持的数据类型 的选项。

这样你就能看到保存在 f_locals 字典中的所有本地变量,即使你不能双击查看它们。

撰写回答