2012-04-25 46 views
28

我有以下Python代碼:如何在調試時調用Python的列表?

values = set([1, 2, 3, 4, 5]) 
import pdb 
pdb.set_trace() 

我運行該腳本,我在調試外殼:

(pdb) list(values) 
*** Error in argument: '(values)' 
(Pdb) 

我怎麼能說list(values)在調試器,而不必調用調試自己的list命令?

回答

33

只是print它:

(Pdb) print list(values) 
+2

'p'和'pp'較短鍵入=) – okm 2012-04-25 16:13:38

+3

號碼:打印,頁:prettyprint – 2013-06-26 14:51:20

+0

OMG謝謝!我在這裏抨擊了我的頭,我注意到'''list''在pdb中表現不同,但它沒有點擊我的腦袋。 – 2015-02-06 14:06:48

0

蒂埃裏,

由於該數據結構已經是一個序列,它是多餘的,將其指定爲列表。所以這將工作正常。

(Pdb) print values 

(Pbd) print(values) 

如果您正在使用Python3


可選與換行符

(Pdb) for x in values: print x 

0123一個不錯的房源
(Pdb) for x in values: print(x) 

爲Python3

+0

但它不是'list',它是'set'。 – jamylak 2012-04-25 16:07:06

+0

糾正,注意到我的錯誤,因爲你正在打字 – dc5553 2012-04-25 16:08:06

+0

'set'不是'數組''你還在想'列表' – jamylak 2012-04-25 16:10:20

20

感嘆號!逃跑調試器命令:

(Pdb) values = set([1, 2, 3, 4, 5]) 
(Pdb) list(values) 
*** Error in argument: '(values)' 
(Pdb) !list(values) 
[1, 2, 3, 4, 5]