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

不管怎样,我的代码充满了单个字母的变量(这是物理学的东西,所以这些字母是有意义的) ,还有 NumPy 的,我经常与它交互。

在使用 Python 调试器时,我偶尔会想查看值,比如 n。但是,当我点击 n<enter>时,这是 (n)ext的 PDB 命令,它的优先级更高。print n可以看着它工作,但是我怎样才能设置它呢?

13863 次浏览

这不是对您的问题的直接回答,但它可能对您有所帮助: PuDB是 PDB 的一个基于控制台的可视化界面,它通过设计将命令与变量操作分离开来。

Eric IDE,Wing IDE 和 Spyder 提到的几个都有值得一试的可视化调试器,因为它们将值的显示从命令中分离出来。

你可以用分号,所以在前面加点别的东西:

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


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

在语句之前使用叹号 !来运行它:

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

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

使用括号 (variable_name)

例如,如果您有一个名为 q的变量,并且希望检查它的值。 如果在提示符中直接输入 q,则 ipdb调试过程将退出并中断。

>>> q

相反,您应该输入 (q)来检查这个变量:

>>> (q)

然后它的值将被打印出来。