在我尝试过的django shell上
from django import forms
class A(forms.Form):
x = forms.CharField()
ao = A()
import pdb
pdb.run('ao.as_table') 但是在最后一条语句中,在第一次点击continue之后,我得到了一个堆栈跟踪,因为
/usr/lib/python2.6/pdb.pyc in run(statement, globals, locals)
1218
1219 def run(statement, globals=None, locals=None):
-> 1220 Pdb().run(statement, globals, locals)
1221
1222 def runeval(expression, globals=None, locals=None):
/usr/lib/python2.6/bdb.pyc in run(self, cmd, globals, locals)
370 cmd = cmd+'\n'
371 try:
--> 372 exec cmd in globals, locals
373 except BdbQuit:
374 pass
/usr/lib/pymodules/python2.6/IPython/FakeModule.pyc in <module>()
NameError: name 'ao' is not defined出了什么问题?
发布于 2011-03-19 14:44:04
pdb.run(‘打印ao.as_table()',本地变量())
基本上传递locals()字典
发布于 2011-03-19 14:56:52
两件事。
"ao.as_table()",将关键字参数locals=locals()传递给函数。您也可以传递globals=globals()。不要使用locals()作为位置参数,因为它将被赋值给全局变量,因为run(statement[, globals[, locals]])将全局变量作为第一个参数。因此,如果第一个位置参数为locals(),则在运行代码时会将其误认为globals。它应该是
pdb.run('print ao.as_table()‘locals=locals())
https://stackoverflow.com/questions/5360598
复制相似问题