为什么我在运行pdb
时无法定义新功能?
例如,参考myscript.py:
#!/gpfs0/export/opt/anaconda-2.3.0/bin/python
print "Hello World"
print "I see you"
如果我运行python -m pdb myscript.py
并尝试以交互方式定义新功能:
def foo():
我收到错误:
*** SyntaxError: unexpected EOF while parsing (<stdin>, line 1)
为什么会这样?
答案 0 :(得分:14)
我认为它不支持多行输入。您可以通过在pdb中生成交互式会话来解决此问题。完成交互式会话后,使用Ctrl + D退出。
>>> import pdb
>>> pdb.set_trace()
(Pdb) !import code; code.interact(local=vars())
(InteractiveConsole)
In : def foo():
...: print 'hello in pdb'
...:
In : # use ctrl+d here to return to pdb shell...
(Pdb) foo()
hello in pdb
答案 1 :(得分:6)
您可以使用;
而不是缩进在单行语句中定义函数,如下所示:
(Pdb) def foo(): print 'Hello world'; print 'I see you'
(Pdb) foo()
Hello world
I see you
答案 2 :(得分:0)
我能够从pdb
命令行导入python模块。
如果你可以导入python模块,那么你应该能够在文件中定义你的函数,只需要导入文件。