我是python的新手,正在使用Spyder的IDE。我欣赏它的一个特点是它的变量浏览器。然而,基于一些研究,我发现它只显示全局变量。我找到的解决方法是使用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的变量资源管理器选项中,第二个字典显示正确的大小属性,但是,我无法打开/查看它。关于可能解决的任何想法?这是我第一次发布BTW。
谢谢!
以下是我的问题的一个工作示例,我已将其追溯到pylab子图。
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()
当感兴趣的线被注释掉时,dict会成功创建并可以查看。似乎使用fig.add_subplot()创建的对象没有被dict正确处理。它似乎是一种不受支持的数据类型。
希望这有助于澄清问题。
再次感谢。
答案 0 :(得分:11)
要查看其中一些变量不受支持的局部变量的内容,您必须按照以下步骤操作:
转到Variable Explorer的选项菜单(从左到右的最后一个图标)。
选择名为排除不支持的数据类型的选项。
然后,您将看到f_locals
dict中保存的所有局部变量,即使您无法双击它。
答案 1 :(得分:2)
所有这些变通办法都使您的代码更难以为外人阅读。您有两个选项可以检查函数内部变量的值。首先,您可以返回您感兴趣的变量:
def main():
a = 2
b = 4
c = a+b
return a, b, c
a, b, c = main()
其次,如果您只是想检查函数是否按预期工作或调试它,您可以调试该函数并进入它。因此,从菜单中选择“运行”|“调试”,而不是直接运行文件。然后你可以进入函数 - 当变量在函数内部时,变量的值将在变量资源管理器中可见。