如何操作名称与PDB命令冲突的变量?

时间:2014-01-14 20:35:54

标签: python pdb

无论好坏,我的代码充斥着单字母变量(它是物理学的东西,所以那些字母是有意义的),以及NumPy,我经常与之互动。

使用Python调试器时,偶尔我会想看看n的值。但是,当我点击n<enter>时,这是(n)ext的PDB命令,它具有更高的优先级。 print n可以查看它,但我该如何设置呢?

4 个答案:

答案 0 :(得分:98)

在语句前使用感叹号!让它运行:

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)

docs说:

  

! statement

     

在当前堆栈帧的上下文中执行(一行)语句。除非语句的第一个单词类似于调试器命令,否则可以省略感叹号。 [...]

答案 1 :(得分:13)

你可以使用分号,所以只需在它前面加上其他东西:

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

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

答案 2 :(得分:2)

这不是你问题的直接答案,但它可以帮到你:PuDB是一个基于控制台的PDB可视化界面,它通过设计将命令与变量操作分开。

答案 3 :(得分:-1)

Eric IDE,Wing IDE&amp; Spyder提到的只有少数都有可视化的调试器,因为它们将值的显示与命令分开。