Hoe manipuleer ik een variabele waarvan de naam in strijd is met PDB-commando’s?

Mijn code staat, in positieve of negatieve zin, vol met variabelen van één letter (het zijn natuurkundige dingen, dus die letters zijn zinvol), evenals die van NumPy, waarmee ik vaak interactie heb.

Als ik de Python-debugger gebruik, wil ik af en toe kijken naar de waarde van, laten we zeggen, n. Wanneer ik echter op n<enter>druk, is dat het PDB-commando voor (n)ext, dat een hogere prioriteit heeft. print nwerkt er omheen om ernaar te kijken, maar hoe kan ik het instellen?


Antwoord 1, autoriteit 100%

Gebruik een uitroepteken !voor een instructie om deze te laten uitvoeren:

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)

De docszeggen:

! statement

Voer de (eenregelige) instructieuit in de context van het huidige stapelframe. Het uitroepteken kan worden weggelaten, tenzij het eerste woord van de instructie lijkt op een debugger-opdracht. […]


Antwoord 2, autoriteit 8%

Je kunt puntkomma’s gebruiken, dus zet er gewoon iets anders voor:

ipdb> print n
2
ipdb> n
> 145 <some code here>
  146
  147
ipdb> 1; n=4
1
ipdb> print n
4

Antwoord 3

Dat is niet het directe antwoord op je vraag, maar het kan je misschien helpen: PuDBis een console-gebaseerde visuele interface voor PDB die commando’s scheidt van variabele manipulatie door ontwerp.


Antwoord 4

Eric IDE, Wing IDE & Spyder, om er maar een paar te noemen, hebben allemaal visuele debuggers die het proberen waard zijn omdat ze de weergave van waarden scheiden van de opdrachten.

Other episodes