我试图计算化学方程式中元素的数量。我创建的调试器无法访问程序中的全局变量。具体地说,我试图访问carrots
,但是left
没有被添加到堆栈中。有什么想法吗?在
调试.py
class Debugger(object):
def __init__(self,objs):
assert type(objs)==list, 'Not a list of strings'
self.objs = objs
def __repr__(self):
return '<class Debugger>'
def show(self):
for o in self.objs:
print o,globals()[o] #EDIT
化学_平衡器.py
^{pr2}$错误消息:
Traceback (most recent call last):
File "C:\Python27\#Files\repair\Chemical_Balancer.py", line 38, in <module>
debug.show()
File "C:\Python27\lib\site-packages\Debug.py", line 12, in show
print o,globals()[o]
File "<string>", line 1, in <module>
KeyError: 'carrots'
关于
left
变量的特定错误:当你说一个变量是全局变量时,python知道它必须在全局名称空间中查找它。但是在代码中,^{没有在这样的命名空间中赋值。在
如您所见,
left
被注释掉了通过删除行开头的
^{pr2}$#
来取消注释,因此directions
函数中的行可以找到它,下面的说明可以工作。在
实施情况: 允许调试器知道在何处查找变量(即在哪个模块中)的一个解决方案是在创建模块时向其提供模块的名称。然后调试器对象可以通过
sys.modules[module_name].__dict__
访问创建它的模块的全局变量调试器.py
化学_平衡器.py
产生
如您所见,调试器每次调用其
show
方法时都会打印变量的当前值我发现this SO Q&A信息丰富,很有帮助。在
相关问题 更多 >
编程相关推荐