दिलचस्प पोस्ट
dynamic_cast और static_cast सी ++ में Android सूचीदृश्य के अंत में एक बटन को कैसे दिखाया जाए "वास्तविक" संस्कृति का उपयोग करें। WPF बाध्यकारी में वर्तमान संस्कृति, IetfLanguageTag से CultureInfo नहीं सूचना: अपरिभाषित ऑफ़सेट: 0 इंच एंड्रॉइड पर मैं ऑब्जेक्ट को एक गतिविधि से दूसरे में कैसे पारित कर सकता हूं? एक शब्द को पार्स करने और पूंजी अक्षरों से पहले रिक्त स्थान जोड़ने का एक शानदार तरीका है पटरियों 4: फोंट उत्पादन में क्यों नहीं लोड हो रहे हैं? एंड्रॉइड स्टूडियो: "निष्पादन कार्य के लिए असफल": ऐप: मर्ज डिबग संसाधन संसाधित करें "यदि प्रोजेक्ट को ड्राइव सी पर बनाया गया है: टाइल अपडेट पर ऐप का नाम दिखाएं ओविन स्टार्टअप क्लास लापता Java8: एक सूची में ऑब्जेक्ट के विशिष्ट फ़ील्ड से योग मान IDbSet.Add और DbEntityEntry.State = EntityState.Added में अंतर क्या है? सक्रिय निर्देशिका के साथ .NET में उपयोगकर्ता समूह और भूमिका प्रबंधन क्रोम एक्सटेंशन में क्रॉस-उत्पत्ति XMLHttpRequest Google Chrome को स्थानीय फ़ाइल से URL लोड करने के लिए XMLHttpRequest का उपयोग करने की अनुमति दें

मेरे पायथन कोड को पहली बार चलाने के लिए अच्छे तरीके क्या हैं?

मुझे अपने कोड में काफी कुछ त्रुटियां मिल रही हैं I नतीजतन, मैं उन्हें शुरू में कम से कम करने में सक्षम होना चाहता हूं या कोड निष्पादन से पहले संभवतः कई त्रुटियां देख सकता हूं। क्या यह संभव है और यदि हां, तो मैं यह कैसे कर सकता हूं?

Solutions Collecting From Web of "मेरे पायथन कोड को पहली बार चलाने के लिए अच्छे तरीके क्या हैं?"

अगर आपको सिंटैक्स के साथ समस्या आ रही है, तो आप सिंटैक्स हाइलाइटिंग के साथ एक संपादक का प्रयास कर सकते हैं। जब तक आप एक भाषा के लिए महसूस नहीं करते हैं, साधारण त्रुटियां सिर्फ आप पर पॉप नहीं करेंगे

डीबगिंग का सबसे आसान तरीका सिर्फ कुछ प्रिंट स्टेटमेंट सम्मिलित करना है। ऐसा करने के लिए एक और अधिक उन्नत (और एक्स्टेंसिबल) तरीका स्टडी लिब से लॉगिंग मॉड्यूल का उपयोग करना होगा।

इंटरैक्टिव दुभाषिया अजगर कोड के साथ काम करने के लिए एक बढ़िया उपकरण है, और आईप्याथॉन निर्मित आरईपीएल (वाइवल प्रिंट लूप पढ़ें) में एक महान सुधार है।

यदि आप वास्तव में अपने कोड के माध्यम से कदम चाहते हैं, तो अजगर डीबगर को पीडीबी कहा जाता है, जिसे कमांड लाइन से कहा जा सकता है, या आपके कोड में एम्बेड किया जा सकता है।

यदि आप एक पूरी तरह से एकीकृत आईडीई के लिए उपयोग कर रहे हैं, तो मैं एक्वायप्से के साथ pydev का उपयोग करने की सलाह देता हूं, और कई अन्य रोचक विशेषताओं के बीच, स्वत: पूर्ण, डॉक्स की त्वरित पहुंच और कई शॉर्टकट के साथ, पीएचचर्म में एक महान व्यावसायिक पेशकश है।

पायथन में डीबगिंग की सुविधा के लिए यहां कुछ तकनीकें हैं:

  • इंटरैक्टिव शेल जैसे, आईप्याथॉन का उपयोग करें पायथन एक गतिशील भाषा है, जिस प्रकार आप टाइप करते समय अपना कोड एक्सप्लोर कर सकते हैं। शेल हर समय मेरे संपादक में दूसरी विंडो में चल रहा है

  • शैल से डॉकस्ट्रिंग को कॉपी-चिपकाने वाला कोड जो फ़ंक्शन (क्लास, मॉड्यूल) के प्रमुख उपयोग और कोने के मामलों को दर्शाता है। doctest.testmod() रखा if __name__=="__main__" खंड मॉड्यूल में सभी docstrings परीक्षण करने की अनुमति देता है। दूतावास आसानी से एकीकृत हो सकते हैं।

  • उन सामानों के लिए उपयोग करें जो कभी नहीं हो सकते।

  • print() कई डीबगिंग समस्याओं को हल कर सकता है; लॉगिंग मॉड्यूल दीर्घकालिक अजगर प्रक्रियाओं के लिए उपयुक्त है।

  • लिखना परीक्षण (जरूरी नहीं कि आपके कोड से पहले), उन्हें अक्सर चलाएं (स्वचालित रूप से या एक कुंजीस्ट्रोक के साथ); नाक विस्तारित परीक्षण की खोज और एकजुट होने के लिए चल रही सुविधाएँ प्रदान करता है।

  • कभी-कभी पिलिंट चलाएं

इस बिंदु पर एक औपचारिक अजगर डीबगर के लिए बहुत कम उपयोग होता है। Winpdb एक बाहरी बहु-प्लेटफ़ॉर्म GPL'ed GUI अजगर डीबगर है अगर आपको एक की आवश्यकता हो तो

इंटरैक्टिव दुभाषिया में सभी बहुत ही शांत सामान आसानी से प्रदर्शित किया गया है मुझे लगता है कि यह अच्छे डिजाइन के लिए "सोने का मानक" हो सकता है:

क्या आप अपने वर्ग को अंतःक्रियात्मक रूप से व्यायाम कर सकते हैं?

यदि आप इंटरेक्टिव तरीके से सामान कर सकते हैं, तो आप विश्वास के साथ एकजुट और उपदेश लिख सकते हैं कि यह परीक्षण योग्य, सरल, विश्वसनीय है।

और, अधिक महत्वपूर्ण, आप इंटरैक्टिव रूप से इसे एक्सप्लोर कर सकते हैं। टाइपिंग कोड से आने वाली त्वरित अनुपूरक की तुलना में बेहतर कुछ नहीं है और वास्तव में वास्तव में क्या होता है।

संकलित भाषा की आदतों (चीजों का एक गुच्छा लिखें, सामान का एक गुच्छा डिबग करें, सामान का एक गुच्छा परीक्षण करें) पीछे छोड़ा जा सकता है इसके बजाय, आप कुछ सामान लिख सकते हैं, इसे एक्सप्लोर कर सकते हैं, एक औपचारिक परीक्षा लिख ​​सकते हैं और फिर अपनी बढ़ती अंतिम परियोजना के लिए सामानों की थोड़ी सी चीजें संलग्न कर सकते हैं।

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

मैं अजगर के लिए नया हूँ, और कई डिबगर्स की कोशिश कर रहा हूं। यहां तक ​​कि मेरे पास इतने सारे विकल्प हैं I:

  1. पायदेव के साथ ग्रहण – यदि आप पहले से ग्रहण कर रहे हैं, तो शायद यह जाने का तरीका है डिबगर अच्छी तरह से काम करता है, और यह काफी उपयोगी है।
  2. कोमोडो आईडीई – एक हल्के वजन अजगर आईडीई असल में एक पाठ संपादक + डीबगर इसे तुरंत समझना और तुरंत उत्पादक होना आसान था।
  3. WinPDB – यह एक अगले कोशिश कर रहा है। बहुत ख़ास दिखता है, और मुझे जो भी संपादक चुनता है उसका उपयोग करना पड़ता है।
  4. पीडीबी – मैंने अभी तक इसके बारे में पढ़ा नहीं है क्योंकि WinPDB एक बेहतर विकल्प है
  5. % रन कमांड के साथ Ipython – मैंने आइपीथॉन का इस्तेमाल किया है, लेकिन इस तरह से डिबगर के रूप में नहीं। मुझे यह प्रयास करने की आवश्यकता है (टिप के लिए धन्यवाद, ईओएल)
  6. एरिक आईडीई – इसके अलावा कोशिश करने की सूची पर भी
  7. ओल्ड-स्कूल प्रिंट, बयान लेकर – सरल, उपयोगी, लेकिन पूर्ण समाधान नहीं।

मेमोरी डीबगिंग – स्मृति समस्याओं को डिबग करने के लिए, मैं कुछ औजारों में आया हूं:

  1. objgraph – संदर्भ ग्राफ के पीएनजी का उत्पन्न होगा। साफ। इसमें अन्य कार्यक्षमताएं भी हैं, जैसे: आयात objgraph; प्रिंट (objgraph.show_most_common_types (limit = 10)) स्मृति में शीर्ष 10 सबसे सामान्य प्रकारों को प्रिंट करेंगे
  2. जीसी मॉड्यूल – सीधे कचरा कलेक्टर के साथ बातचीत करें
  3. heapy – हीप विश्लेषक उदाहरण के लिए: guppy आयात से hpy; hp = hpy (); प्रिंट (एचपी.हेप ()) सबसे आम प्रकार, उनकी मेमोरी उपयोग आदि को प्रिंट करेंगे।

यह एक बहुत ही अपूर्ण सूची है, लेकिन उम्मीद है कि यह एक अच्छी शुरुआत है।

पायथन एक डिबगर प्रदान करता है जो आपको अपने कोड के माध्यम से कदम, चर का निरीक्षण और उन्हें हेरफेर करने की अनुमति देता है। http://pythonconquerstheuniverse.wordpress.com/category/python-debugger/ को देखें जो आपको कदमों पर ले जा सकते हैं …

पीडीबी के लिए अजगर मानक पुस्तकालय संदर्भ की जांच भी करें http://www.python.org/doc/2.5.2/lib/module-pdb.html

जल्दी परीक्षण करें और अक्सर परीक्षण करें

इसका जरूरी नहीं कि परीक्षण संचालित डिजाइन पूल सिर में पहले कूदना है (हालांकि ऐसा कोई बुरा विचार नहीं है)। इसका मतलब यह है कि जैसे ही आपके पास कुछ काम करता है, जैसे ही आपके ऑब्जेक्ट और विधियों का परीक्षण करें परीक्षण करने से पहले आपके पास कोड का बड़ा ढेर नहीं होने तक प्रतीक्षा न करें

एक परीक्षण ढांचा सीखने में कुछ समय निवेश करें। यदि आपके लिए टेस्ट केस में टाइप करने के लिए तुलनीय है, तो आप अधिक संभावना यह कर सकते हैं। अगर आपके पास कोई प्रकार का ढांचा परीक्षण नहीं है तो यह दर्द हो सकता है, ताकि आप उससे बच सकें। इसलिए, जल्दी कुछ अच्छी आदतें स्थापित करें और आपको सड़क पर कम समस्याएं आ जाएंगी।

अधिक बार नहीं, मैं सिर्फ प्रिंट बयान का एक गुच्छा का उपयोग करता हूँ

 page = grabpage(url) print "Page content:", page print "page type():", type(page) 

ऐसा कुछ करने के लिए कभी-कभी उपयोगी होता है:

 debug = True if debug: print "page content", page 

..इसके साथ आप डीबग वैरिएबल को झूठी स्थिति में बदलकर अपने सभी डीबगिंग प्रिंट स्टेटमेंट को तुरंत अक्षम कर सकते हैं।

जबकि प्रिंट-डिबगिंग आपको अधिकांश मामलों में बहुत दूर मिलेगा, कभी-कभी लूप जैसी चीजों को डिबग करना मुश्किल होता है, या यदि / अन्य / कोशिश / छोड़कर / आदि की एक श्रृंखला होती है। इसके लिए एक डीबगर जो आपके कोड को छोड़ने की अनुमति देता है, और ब्रेक-पॉइंट्स सेट करना उपयोगी है।

pdb पायथन के साथ शामिल है यहाँ इस पर एक अच्छा सरल ट्यूटोरियल है आप रन-टाइम (जो ट्यूटोरियल को शामिल किया गया है) के दौरान चर को बदलते हुए भी कर सकते हैं। अब एक ट्यूटोरियल यहां पाया जा सकता है

एक बहुत अच्छा जीयूआई समकक्ष पीडीबी है- Winpdb

असल में आप winpdb myscript --arg 4 -b 4 चलाते हैं तो यह टर्मिनल में कमांड को लोड करता है, आपको वर्तमान में, स्थानीय / वैश्विक चर (और उनके मान) की सूची और वर्तमान कॉल- ढेर।

फिर आप चरण (या F6) पर क्लिक करके कोड को चरण कर सकते हैं। एफ 5 कोड चलाता है। यदि आप लाइन संख्या के बगल में क्लिक करते हैं, तो यह एक ब्रेक पॉइंट सेट करता है, जहां कोड स्वचालित रूप से कदम होगा (जब आप रन दबाते हैं)।

मुझे इसका उपयोग करना बहुत आसान लगता है, और इसमें बहुत अधिक अतिरिक्त संवर्द्धन (जैसे दूरस्थ डिबगिंग, ताकि आप बैकएंड भाग ( rpdb2 ) को-डी-डिबग करने वाले एप्लिकेशन में चला सकते हैं, और इसे Winpdb से कनेक्ट कर सकते हैं (एन्क्रिप्टेड)। पीडीबी में थ्रेडिंग और अन्य उपयोगी चीजों के लिए समर्थन नहीं है। आपके पास एक पीडीबी-जैसी कॉन्सोल तक पहुंच भी है।

मैं इस चाल का उपयोग करते हुए एक अपवाद अपवाद है, जब स्वचालित रूप से डीबगर शुरू करने के लिए पायथन की स्थापना की। इस तरह, आप बहुत अधिक लॉगिंग कोड के बिना प्रोग्राम की स्थिति आसानी से जांच सकते हैं। (प्लस, मुझे एक गड़बड़ी अधिसूचना भेजने के लिए।)

ओह, और इस तरह आप सिर्फ जोड़कर कोड में ब्रेक प्वाइंट बना सकते हैं

 if answer == 42: 1/0 

उदारता से बयान का प्रयोग करना

निष्पादन से पहले त्रुटियों की पहचान करना स्थिर जांच / विश्लेषण का डोमेन है मेरे पास PyChecker का उपयोग करके पायथन कोड की बुनियादी स्थिर जांच के लिए शुभकामनाएं हैं।

Pycheesecake साइट का उपयोग Python के लिए परीक्षण उपकरण का एक बहुत अच्छा सारांश है ।

एक्लिप्स के लिए PyDev प्लगइन पसंद का मेरा टूल है I यह सरल सिंटैक्स गलतियों और इंडेंटेशन त्रुटियों को पहचानता है और लाल रेखा के साथ त्रुटि को रेखांकित करता है इसमें एक शक्तिशाली डीबगर है और यहां तक ​​कि एक प्लगइन भी है जिसका नाम PyLint है जो आपको खतरनाक कोड के बारे में चेतावनी देता है।

संपादित करें: रनटाइम त्रुटियों, आंशिक ऑटो पूर्ण और कुछ अन्य निफ्टी सुविधाओं पर इसके पास एक उपयोगकर्ता के अनुकूल स्टैक ट्रेस भी है।

फिर से संपादित करें: मैंने ध्यान नहीं दिया कि शीर्ष पद में पइदेव का उल्लेख किया गया था। मुझे आशा है कि मैं मेज पर कुछ और लाया।

python -m pdb yourcode.py इसे करना चाहिए। वैकल्पिक रूप से आप अपने कोड में "पीडीबी आयात कर सकते हैं" और ब्रेक पॉइंट सेट करने के लिए pdb.set_trace () का उपयोग कर सकते हैं। अधिक जानकारी के लिए मैनुअल देखें: http://www.python.org/doc/2.5.2/lib/module-pdb.html

Python के लिए बहुत अच्छा जीयूआई डिबगर Winpdb कहा जाता है इसे आज़माएं। WxWidgets पुस्तकालय और मल्टीप्लाटेट पर निर्मित।

एक सबसे अधिक एकीकृत अनुभव के लिए आप पूरी तरह से विकसित आईडीई का उपयोग कर सकते हैं जैसे कि पीयाचर्म:

http://blog.jetbrains.com/pycharm/files/2011/05/template-debug2.png यहां छवि विवरण दर्ज करें

एरिक 4 आईडीई में एक महान अंतर्निर्मित डीबगर भी है।

IPython पायथन शेल में एक %pdb कमांड है जो समस्या के मामले में स्वचालित रूप से डीबगर को आमंत्रित करता है। आप फिर चर का निरीक्षण कर सकते हैं, कोड आदि के माध्यम से कदम उठा सकते हैं।

आप अपने प्रोग्राम्स को %run कमांड के साथ आइपीथॉन से चला सकते हैं ।

अधिक सामान्यतः, जैसा कि कुछ अन्य उत्तर में लिखा गया है, एक अच्छा पायथन खोल आपके दोस्त है। और आईप्याथोन आपका सबसे अच्छा दोस्त है 🙂