【发布时间】:2012-04-25 15:49:21
【问题描述】:
我有以下 python 代码:
values = set([1, 2, 3, 4, 5])
import pdb
pdb.set_trace()
我运行脚本并在调试 shell 中:
(pdb) list(values)
*** Error in argument: '(values)'
(Pdb)
如何在不调用调试器自己的list 命令的情况下在调试器中调用list(values)?
【问题讨论】:
我有以下 python 代码:
values = set([1, 2, 3, 4, 5])
import pdb
pdb.set_trace()
我运行脚本并在调试 shell 中:
(pdb) list(values)
*** Error in argument: '(values)'
(Pdb)
如何在不调用调试器自己的list 命令的情况下在调试器中调用list(values)?
【问题讨论】:
就print吧:
(Pdb) print list(values)
不要忘记为 python3 版本添加括号
(Pdb) print(list(values))
【讨论】:
p 和 pp 更短于类型 =)
!list 转义它使 pdb 知道您没有运行 pdb 命令
使用感叹号!转义调试器命令:
(Pdb) values = set([1, 2, 3, 4, 5])
(Pdb) list(values)
*** Error in argument: '(values)'
(Pdb) !list(values)
[1, 2, 3, 4, 5]
【讨论】:
蒂埃里,
由于这个数据结构已经是一个序列,因此将其指定为列表是多余的。所以这会很好。
(Pdb) print values
或
(Pbd) print(values)
如果你使用的是 Python3
可选的带有换行符的漂亮列表
(Pdb) for x in values: print x
或
(Pdb) for x in values: print(x)
对于 Python3
【讨论】:
list,而是set。
set 不是array...你还在考虑list
set。我认为您的意思是,如果您只想查看值,可以将其打印出来。
输入interact进入“交互模式”。
(Pdb) heros = ['Gecko', 'Catboy', 'Owlette']
(Pdb) list(heros)
*** Error in argument: '(heros)'
(Pdb) interact
*interactive*
>>> list(heros)
['Gecko', 'Catboy', 'Owlette']
“交互模式”还允许您处理名称与 PDB 命令冲突的变量。
【讨论】:
另一种有点骇人听闻的方法是输入:
lst=list
在pdb 提示符处。接下来你可以写:
values = set([1, 2, 3, 4, 5])
lst(values)
显然这不是推荐的答案。
【讨论】: