问题:如何处理名称与PDB命令冲突的变量?
不管是好是坏,我的代码充斥着单个字母变量(这是物理上的东西,所以这些字母是有意义的)以及我经常与之交互的NumPy。
使用Python调试器时,偶尔我会想看看的值n
。但是,当我点击时n<enter>
,这是PDB命令的(n)ext
优先级更高。 print n
可以解决问题,但是如何设置呢?
回答 0
!
在语句运行前使用感叹号:
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)
该文件说:
! statement
在当前堆栈框架的上下文中执行(单行)语句。除非语句的第一个单词类似于调试器命令,否则可以省略感叹号。[…]
回答 1
您可以使用分号,因此只需在其前面加上其他内容即可:
ipdb> print n
2
ipdb> n
> 145 <some code here>
146
147
ipdb> 1; n=4
1
ipdb> print n
4
回答 2
这不是您问题的直接答案,但可能会对您有所帮助:PuDB是PDB的基于控制台的可视界面,通过设计将命令与变量操作分开。
回答 3
Eric IDE,Wing IDE和Spyder仅举几例都具有可视调试器,因为它们将值的显示与命令分开,因此值得一试。