python - पीईपी 8 अनुपालन होने के लिए पायथन कोड को परिवर्तित करने के लिए टूल




coding-style pep8 (4)

मुझे पता है कि ऐसे उपकरण हैं जो मान्य करते हैं कि आपका पायथन कोड PEP8 के अनुरूप है या नहीं, उदाहरण के लिए एक ऑनलाइन सेवा और एक पायथन मॉड्यूल दोनों है

हालांकि, मुझे कोई सेवा या मॉड्यूल नहीं मिल रहा है जो मेरी पायथन फ़ाइल को स्वयं निहित, पीईपी 8 मान्य पायथन फ़ाइल में परिवर्तित कर सकता है। क्या कोई जानता है कि कोई है?
मुझे लगता है कि यह संभव है क्योंकि पीईपी 8 कोड की उपस्थिति के बारे में है, है ना?


@ एंडी हेडन ने ऑटोपेप 8 का अच्छा अवलोकन दिया। इसके अलावा pep8ify नामक एक और पैकेज भी है जो एक ही चीज करता है।

हालांकि दोनों पैकेज केवल लिंट त्रुटियों को हटा सकते हैं लेकिन वे कोड प्रारूपित नहीं कर सकते हैं।

little = more[3:   5]

उपरोक्त कोड पेप 8िफाइंग के बाद भी बना रहता है। लेकिन कोड अभी तक अच्छा नहीं लग रहा है। आप yapf जैसे yapf उपयोग कर सकते हैं, जो कोड पीईपी 8 अनुपालन के बावजूद भी कोड प्रारूपित करेगा। उपरोक्त कोड को स्वरूपित किया जाएगा

little = more[3:5]

कुछ बार यह आपके मैन्युअल स्वरूपण को भी नष्ट कर देता है। उदाहरण के लिए

BAZ = {
    [1, 2, 3, 4],
    [5, 6, 7, 8],
    [9, 10, 11, 12]
}

में परिवर्तित हो जाएगा

BAZ = {[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]}

लेकिन आप इसे कुछ हिस्सों को अनदेखा करने के लिए कह सकते हैं।

BAZ = {
   [1, 2, 3, 4],
   [5, 6, 7, 8],
   [9, 10, 11, 12]
}  # yapf: disable

मेरे पुराने ब्लॉग पोस्ट से लिया गया: स्वचालित रूप से पीईपी 8 और अपने पायथन कोड को प्रारूपित करें!


आप autopep8 उपयोग कर सकते हैं! जब आप स्वयं को एक कप कॉफी बनाते हैं, तो यह टूल खुशी से उन सभी अजीब पीईपी 8 उल्लंघनों को हटा देता है जो कोड के अर्थ को नहीं बदलते हैं।

इसे पीआईपी के माध्यम से स्थापित करें:

pip install autopep8

इसे किसी विशिष्ट फ़ाइल पर लागू करें:

autopep8 py_file --in-place

या आपके प्रोजेक्ट (रिकर्सिवली) पर, वर्बोज़ विकल्प आपको कुछ प्रतिक्रिया देता है कि यह कैसा चल रहा है :

autopep8 project_dir --recursive --in-place --pep8-passes 2000 --verbose

नोट: कभी-कभी 100 पास का डिफॉल्ट पर्याप्त नहीं होता है, मैंने इसे 2000 तक सेट किया है क्योंकि यह काफी हद तक ऊंचा है और सबसे परेशानी वाली फाइलों के अलावा सभी को पकड़ लेगा (यह किसी भी हल करने योग्य पेपर 8 अवरोध मिलने के बाद गुजरता है) ...

इस बिंदु पर मैं सुझाव देना और प्रतिबद्धता करना चाहता हूं!

यदि आप "पूर्ण" पीईपी 8 अनुपालन चाहते हैं: मैंने जो एक रणनीति का उपयोग किया है वह ऊपर के रूप में autopep8 चलाने के लिए है, फिर पीईपी 8 चलाएं, जो शेष उल्लंघन (फ़ाइल, रेखा संख्या, और क्या) प्रिंट करता है:

pep8 project_dir --ignore=E501

और इन व्यक्तिगत रूप से इन्हें मैन्युअल रूप से बदलें (उदाहरण के लिए E712s - बूलियन के साथ तुलना)।

नोट: autopep8 एक --aggressive तर्क प्रदान करता है (इन अर्थ-परिवर्तनकारी उल्लंघनों को निर्दयतापूर्वक "ठीक करने" के लिए), लेकिन सावधान रहें यदि आप आक्रामक उपयोग करते हैं तो आपको डीबग करना पड़ सकता है ... (उदाहरण के लिए numpy / pandas True == np.bool_(True) लेकिन True is np.bool_(True) नहीं True is np.bool_(True) !)

आप जांच सकते हैं कि प्रत्येक प्रकार के कितने उल्लंघन (पहले और बाद में):

pep8 --quiet --statistics .

नोट: मुझे लगता है कि ई 501 (लाइन बहुत लंबी) एक विशेष मामला है क्योंकि शायद आपके कोड में इनमें से बहुत कुछ होगा और कभी-कभी इन्हें autopep8 द्वारा ठीक नहीं किया जाता है।

उदाहरण के तौर पर, मैंने इस तकनीक को pandas कोड बेस पर लागू किया


यदि आप ग्रहण + पीईडीवीव का उपयोग कर रहे हैं तो आप पाइडेव की सेटिंग्स से ऑटोपैप 8 को सक्रिय कर सकते हैं: विंडोज़ -> प्राथमिकताएं -> खोज फ़िल्टर में 'autopep8' टाइप करें।

कोड स्वरूपण के लिए 'autopep8.py का उपयोग करें' की जांच करें? -> ठीक है

अब ग्रहण का CTRL-SHIFT-F कोड स्वरूपण autopep8 का उपयोग कर अपने कोड को प्रारूपित करना चाहिए :)


वंहा पर बहुत सारे हैं।

आईडीई में आमतौर पर कुछ स्वरूपण क्षमता होती है। इंटेलिजे आइडिया / पायचर्म करता है, जो एक्लिप्स के लिए पाइथन प्लगइन के लिए भी जाता है, और इसी तरह।

प्रारूपक / लिंटर्स हैं जो कई भाषाओं को लक्षित कर सकते हैं। https://coala.io उन लोगों का एक अच्छा उदाहरण है।

फिर एक ही उद्देश्य उपकरण हैं, जिनमें से कई अन्य उत्तरों में उल्लेख किए गए हैं।





pep8