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

问题描述 投票:66回答:4

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

使用Python调试器时,偶尔我会想看一下n的值。但是,当我点击n<enter>时,这是(n)ext的PDB命令,它具有更高的优先级。 print n正在研究它,但我该怎么设置呢?

python pdb
4个回答
104
投票

在语句之前使用感叹号!使其运行:

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

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


13
投票

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

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

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

2
投票

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


-1
投票

Eric IDE,Wing IDE和Spyder提到的几个都有可视化调试器,因为它们将命令的值显示分开。

© www.soinside.com 2019 - 2024. All rights reserved.