मैं एक चर का हेरफेर कैसे कर सकता हूं जिसका नाम पीडीबी कमांडों के साथ संघर्ष करता है?


95

मेरा कोड बेहतर या बदतर के लिए, सिंगल लेटर वेरिएबल्स के साथ व्याप्त है (यह फिजिक्स स्टफ है, इसलिए वे अक्षर सार्थक हैं), साथ ही न्यूमपी भी, जिसके साथ मैं अक्सर बातचीत कर रहा हूं।

पायथन डिबगर का उपयोग करते समय, कभी-कभी मैं मान को देखना चाहता हूं, कहते हैं n,। हालांकि, जब मैं हिट करता हूं, तो n<enter>यह पीडीबी कमांड है (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

एरिक आईडीई, विंग आईडीई और स्पाइडर का उल्लेख करने के लिए बस कुछ ही दृश्य डिबगर्स हैं जो कि जाने लायक हैं क्योंकि वे कमांड से मूल्यों के प्रदर्शन को अलग करते हैं।


कंसोल के माध्यम से डिबगिंग की तुलना में दृश्य डीबगर आमतौर पर बहुत धीमा होते हैं, जो डिबगर शुरू करने में लगभग कोई समय नहीं लेता है।
जिज्ञासु

1
@ गंभीर वे शुरू करने के लिए धीमे हैं, लेकिन विशेष रूप से सीमित अनुभव वाले लोगों के लिए अक्सर अधिक उपयोगी होते हैं।
स्टीव बार्न्स

वैज्ञानिक काम के लिए मुझे स्पाइडर डिबगर काम लगता है। मुझे नहीं लगता कि एक 10x10 मैट्रिक्स डिबगिंग पर CLI व्यावहारिक है
shaunakde
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.