Как управлять переменной, имя которой конфликтует с командами PDB?


мой код, к лучшему или худшему, изобилует однобуквенными переменными (это физический материал, поэтому эти буквы имеют смысл), а также NumPy, с которыми я часто взаимодействую.

при использовании отладчика Python, иногда я хочу посмотреть на значение, скажем,n. Однако, когда я ударил n<enter>, это команда PDB для (n)ext, который имеет более высокий приоритет. print n работает вокруг, глядя на него, но как я могу установить его?

4   51   2014-01-15 00:35:53

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)

вы можете использовать точки с запятой, поэтому просто поместите что-то еще перед ним:

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

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

Это не прямой ответ на ваш вопрос, но это может помочь вам: PuDB представляет собой консольный визуальный интерфейс для PDB, который отделяет команды от переменных манипуляций по дизайну.

Eric IDE, Wing IDE & Spyder, чтобы упомянуть только некоторые из них, имеют визуальные отладчики, которые стоят того, чтобы идти, поскольку они отделяют отображение значений от команд.