在Spyder的变量资源管理器中查看局部变量
我刚开始学习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
要查看本地变量的内容,即使有些变量不被支持,你需要按照以下步骤操作:
打开变量浏览器的选项菜单(在它的最右边的图标)。
选择一个叫做 排除不支持的数据类型 的选项。
这样你就能看到保存在 f_locals
字典中的所有本地变量,即使你不能双击查看它们。