簡體   English   中英

如何在 pdb 中定義一個新函數

[英]How to define a new function in pdb

為什么在運行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)

為什么是這樣?

我認為它不支持多行輸入。 您可以通過從 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

您可以使用;在一行語句中定義您的函數; 而不是縮進,像這樣:

(Pdb) def foo(): print 'Hello world'; print 'I see you'
(Pdb) foo()
Hello world
I see you

我能夠從pdb命令行導入 python 模塊。

如果您可以導入 python 模塊,那么您應該能夠在文件中定義您的函數並只導入文件。

如果您的應用程序碰巧有 IPython 作為依賴項,您可以直接從 ipdb 進入功能豐富的 IPython REPL:

import IPython; IPython.embed()

從內部來看,如果您運行 IPython 的魔法命令whos ,您應該會看到當前pdb框架中所有本地定義的變量。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM