2014-01-14 29 views
39

我的代碼無論好壞都與單字母變量(它是物理的東西,所以這些字母是有意義的)以及NumPy的,我經常與之交互。如何操作名稱與PDB命令衝突的變量?

當使用Python調試器時,偶爾我會想看看n的值。但是,當我點擊n<enter>時,這是PDB命令(n)ext,它具有更高的優先級。 print n適用於查看它,但我該如何設置它?

+2

類,但有你試用'eval'? 'eval('n = 3')'?也許它有幫助:) –

回答

60

使用感嘆號!聲明之前,有它運行:矯枉過正的

python -m pdb test.py 
> /home/user/test.py(1)<module>() 
-> print('foo') 
(Pdb) !n = 77 
(Pdb) !n 
77 
(Pdb) n 
foo 
> /home/user/test.py(2)<module>() 
-> print('bar') 
(Pdb) 
2

這不是您的問題的直接答案,但它可以幫助您:PuDB是一個基於控制檯的PDB可視化界面,它將命令與設計中的變量操作分開。

+0

看起來很有趣;當我有時間學習時,我將不得不對其進行刺探 –

-1

Eric IDE,Wing IDE & Spyder提到了幾個都有值得一試的可視化調試器,因爲它們將命令的值顯示分開。

+0

與通過控制檯進行調試相比,可視化調試器通常非常緩慢,而調試器幾乎沒有時間啓動調試器。 – Curious

+0

@Curious它們開始較慢,但通常更適用於那些經驗有限的人。 –

10

您可以使用分號,所以只是把別的東西在它的前面:

ipdb> print n 
2 
ipdb> n 
> 145 <some code here> 
    146 
    147 

ipdb> 1; n=4 
1 
ipdb> print n 
4 
+3

功能解決方法,但我相信'!'是經營者打算處理這種情況。 – dinosaur

+0

你是對的...我建議改爲。 –