PEP8 की E128 क्या है: दृश्य इंडेंट के लिए निरंतर लाइन अंडर इंडेंटेड?


298

बस Sublime Text (Sublime Linter के साथ) के साथ एक फ़ाइल खोली और एक PEP8 प्रारूपण त्रुटि देखी जो मैंने पहले कभी नहीं देखी थी। यहाँ पाठ है:

urlpatterns = patterns('',
    url(r'^$', listing, name='investment-listing'),
)

यह दूसरा तर्क है, जो लाइन शुरू होती है url(...)

मैं इस जांच को ST2 में अक्षम करने वाला था, लेकिन मैं इसे अनदेखा करने से पहले यह जानना चाहूंगा कि मैं क्या गलत कर रहा हूं । आप कभी नहीं जानते, अगर यह महत्वपूर्ण लगता है तो मैं भी अपने तरीके बदल सकता हूं :)

जवाबों:


475

PEP-8 आपको शुरुआती कोष्ठकों में इंडेंट लाइनों की सलाह देता है यदि आप पहली पंक्ति में कुछ भी डालते हैं, तो यह या तो उद्घाटन ब्रैकेट में इंडेंट करना चाहिए:

urlpatterns = patterns('',
                       url(r'^$', listing, name='investment-listing'))

या शुरुआती लाइन पर कोई तर्क नहीं दे रहा है, तो एक समान स्तर पर इंडेंट कर रहा है:

urlpatterns = patterns(
    '',
    url(r'^$', listing, name='investment-listing'),
)

urlpatterns = patterns(
    '', url(r'^$', listing, name='investment-listing'))

मेरा सुझाव है कि आप PEP-8 के माध्यम से एक रीडिंग लेते हैं - आप इसमें से बहुत से स्किम कर सकते हैं, और कुछ तकनीकी पीईपी के विपरीत इसे समझना बहुत आसान है।


5
कोई भी जानता है कि Django ऐसा क्यों करता है; क्या कोई अच्छा कारण है? ऐसा लगता है कि PeP-8 का पालन करना उतना ही आसान होगा।
TheHerk

6
यह Django कोड में इतना सर्वव्यापी है जो मैंने देखा है (प्लस यह उनके डॉक्स पर है) कि यह यकीनन PEP-8 को अधिगृहित करता है, आखिरकार यह कहता है " कई परियोजनाओं के अपने कोडिंग स्टाइल दिशानिर्देश हैं। किसी भी टकराव की स्थिति में, ऐसी परियोजना। -स्पेशल गाइड्स उस प्रोजेक्ट के लिए मिसाल हैं। "
निक टी

6
@ तर्क यह है कि पहला तर्क patterns()अद्वितीय है (निर्दिष्ट सब कुछ के लिए एक उपसर्ग), और अन्य सभी तर्क यूआरएल पैटर्न हैं जो मूल रूप से समान हैं।
निक टी

6
@NickT आप गलत पढ़ रहे हैं PEP-8 - PEP-8 मौजूदा कन्वेंशन का पालन करने की सिफारिश करता है, जहां एक दिया प्रोजेक्ट इसका इस्तेमाल करता है - लेकिन इस मामले में कोड Django में नहीं जा रहा है, यह Django का उपयोग करके आपके प्रोजेक्ट में जा रहा है - कोई ज़रूरत नहीं है उनके सम्मेलन का पालन करने के लिए। उस नियम का उद्देश्य कोड-बेस के अंदर स्थिरता बनाए रखना है।
गारेथ लेटी

25
ध्यान दें कि PEP8 यह भी बताता है कि आपको PEP8 को नजरअंदाज करना चाहिए जहां ऐसा करने का कोई मतलब है, और मैं तर्क देता हूं कि इस मामले में समझ में आता है। अपनी खुद की परियोजनाओं के लिए असहमत महसूस करें। किसी भी स्थिति में यह जल्द ही एक म्यूट पॉइंट patterns()होगा क्योंकि उपयोग करने के लिए Django 1.8 में चित्रित
टॉम कैरिक

13

यह इस तरह के बयानों के लिए भी जाता है (PyCharm द्वारा ऑटो-स्वरूपित):

    return combine_sample_generators(sample_generators['train']), \
           combine_sample_generators(sample_generators['dev']), \
           combine_sample_generators(sample_generators['test'])

जो एक ही स्टाइल-वार्निंग देगा। इससे छुटकारा पाने के लिए मुझे इसे फिर से लिखना पड़ा:

    return \
        combine_sample_generators(sample_generators['train']), \
        combine_sample_generators(sample_generators['dev']), \
        combine_sample_generators(sample_generators['test'])

2
मैं यहाँ बैकस्लैश के ऊपर कोष्ठक को पसंद करता हूँ, पहली पंक्ति का return (, फिर प्रत्येक पंक्ति में अपनी वापसी योग्य वस्तु, इंडेंटेड और अंत में एक अलग लाइन पर क्लोजिंग ब्रैकेट, समान इंडेंटेशन स्तर पर returnसंपादित करें: इस pastebin.com/fAe7558X की
मार्कस मेस्कैनन

1
@MarkusMeskanen हाँ, मुझे भी। मैं सिर्फ यह बताना चाहता था कि इस विनिर्देश के साथ भी ऑटो-प्रारूप पूरी तरह से अनुपालन नहीं करता है।
डिस्प्लेनेम
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.