pdb的问题
在 django shell 上我尝试过
from django import forms
class A(forms.Form):
x = forms.CharField()
ao = A()
import pdb
pdb.run('ao.as_table')
,但在最后一个语句中,第一次点击“继续”后,我得到了堆栈跟踪,因为
/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
出了什么问题? :(
on a django shell i tried
from django import forms
class A(forms.Form):
x = forms.CharField()
ao = A()
import pdb
pdb.run('ao.as_table')
but on the last statement , after hitting continue for the first time i am getting a stacktrace as
/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
what went wrong ? :(
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
基本上传递了 locals() 字典
Basically pass on the locals() dictionary
有两件事。
"ao.as_table()"
以()
作为后缀。locals=locals()
传递给函数。您还可以传递globals=globals()
。不要使用 locals() 作为位置参数,因为它会被分配给全局变量,因为run(statement[, globals[, locals]])
将全局变量作为第一个参数。因此,如果第一个位置参数是locals()
,那么在运行代码时它将被误认为globals
。应该是
Two things.
"ao.as_table()"
with()
as suffix.locals=locals()
to the function. You can also passglobals=globals()
. Don't use locals() as positional argument, as it will get assigned to globals asrun(statement[, globals[, locals]])
takes globals as first argument. So if the first positional argument islocals()
it will be mistaken asglobals
while running your code.It should be