Adı PDB komutlarıyla çakışan bir değişkeni nasıl işleyebilirim?


95

Kodum, iyi ya da kötü, tek harfli değişkenlerle (fizikle ilgili şeylerdir, bu yüzden bu harfler anlamlıdır) ve sıklıkla etkileşimde bulunduğum NumPy's ile doludur.

Python hata ayıklayıcısını kullanırken, ara sıra diyelim ki değerine bakmak isteyeceğim n. Ancak, vurduğumda n<enter>, bu (n)extdaha yüksek önceliğe sahip olan PDB komutu . print nona bakmakla uğraşıyor, ama onu nasıl ayarlayabilirim?


2
Biraz abartma ama denedin evalmi? eval('n = 3')? Belki yardımcı olur :)
Paulo Bu

Yanıtlar:


131

!Bir ifadenin çalıştırılması için önce ünlem işareti kullanın :

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)

Dokümanlar ki:

! statement

Geçerli yığın çerçevesi bağlamında (tek satırlı) ifadeyi yürütün . İfadenin ilk kelimesi bir hata ayıklayıcı komutuna benzemediği sürece ünlem işareti çıkarılabilir. [...]


1
IMO, komutların gerektirmesi için daha kullanıcı dostu olurdu ! veya böyle bir önek.
user76284

13

Noktalı virgül kullanabilirsiniz, bu yüzden önüne başka bir şey koyun:

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

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

7
İşlevsel bir çözüm, ancak "!" operatörün bu durumla ilgilenmesi amaçlanmıştır.
dinozor

2

Bu, sorunuzun doğrudan cevabı değildir, ancak size yardımcı olabilir: PuDB , PDB için komutları tasarım gereği değişken işlemlerden ayıran konsol tabanlı bir görsel arabirimdir.


İlgi çekici görünüyor; Öğrenmek için vaktim olduğunda ona bir göz
Nick T

-1

Eric IDE, Wing IDE ve Spyder, değerlerin gösterimini komutlardan ayırdıkları için denemeye değer görsel hata ayıklayıcılara sahiptir.


görsel hata ayıklayıcılar, konsol aracılığıyla hata ayıklamaya kıyasla genellikle çok yavaştır ve hata ayıklayıcıyı başlatmak neredeyse hiç zaman almaz.
Meraklı

1
@ Meraklı Başlamak için daha yavaştırlar, ancak özellikle sınırlı deneyime sahip olanlar için genellikle daha kullanışlıdırlar.
Steve Barnes

Bilimsel çalışmalar için Spyder'ın hata ayıklayıcısını kullanışlı buluyorum.
CLI'de
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.