Як я маніпулюю змінною, ім'я якої суперечить командам PDB?


95

Мій код, на краще чи гірше, рясніє однобуквеними змінними (це фізичні речі, тому ці букви значущі), а також NumPy, з яким я часто взаємодію.

При використанні відладчика Python, іноді я хочу подивитися на значення, скажімо, n. Однак, коли я натискаю n<enter>, це команда PDB для (n)ext, яка має вищий пріоритет. print nпрацює навколо, дивлячись на це, але як я можу це встановити?


2
Надзвичайно, але чи пробували ви eval? eval('n = 3')? Можливо, це допомагає :)
Пауло Бу

Відповіді:


131

Використовуйте знак оклику !перед твердженням, щоб його запустити:

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
IMO було б більш зручним для користування командами ! або якийсь такий префікс.
user76284

13

Ви можете використовувати крапку з комою, тому просто поставте щось інше перед цим:

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

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

7
Функціональний обхідний шлях, але я вважаю "!" це оператор, призначений для розгляду цієї справи.
динозавр

2

Це не пряма відповідь на ваше запитання, але це може вам допомогти: PuDB - це візуальний інтерфейс на основі консолі для PDB, який за проектом відокремлює команди від маніпуляцій змінними.


Виглядає цікаво; Мені доведеться вдарити його, коли
Нік Т

-1

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


візуальні налагоджувачі зазвичай дуже повільні в порівнянні з налагодженням через консоль, для запуску налагоджувача майже не потрібно часу.
Цікаво

1
@ Curious Вони починають повільніше, але часто більш корисні, особливо для тих, хто має обмежений досвід.
Steve Barnes

Для наукової роботи я справді вважаю відладчик Spyder зручним. Я не думаю, що налагодження матриці 10x10 є практичним для CLI
shaunakde
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.