2010-03-07 6 views
6

मान लीजिए कि आप एक फ़ंक्शन को कॉल कर रहे हैं, जहां पठनीयता के लिए कुछ पंक्तियों में कथन को तोड़ने की स्पष्ट आवश्यकता है।कोडिंग शैली - एक ही रेखा या नई लाइन पर कोष्ठक रखें?

आप यह कर सकते हैं: लेकिन वहाँ कम से कम दो तरह से यह करने के लिए कर रहे हैं

return render(request, template, 
       { 
       'var1' : value1, 
       'var2' : value2, 
       'var3' : value3 
       } 
      ) 

या अगर आप चाहें कि क्या करना होगा:

return render \ 
(
    request, template, 
    { 
     'var1' : value1, 
     'var2' : value2, 
     'var3' : value3 
    } 
) 

या अपना स्वयं का स्वरूपण का सुझाव दें। कृपया कारणों को भी सूचीबद्ध करें कि आप किसी विशेष स्वरूपण का उपयोग क्यों करेंगे और दूसरे के साथ क्या गलत है।

धन्यवाद

उत्तर

8

मैं शायद चाहते कार्य करें:

return render(
    request, 
    template, 
    { 
     'var1' : value1, 
     'var2' : value2, 
     'var3' : value3 
    } 
) 

मैं इतना है कि render( काम के लिए खोज करता है, एक ही लाइन पर ब्रैकेट बनाए रखेगा। और क्योंकि मुझे यह स्पष्ट लगता है। लेकिन मैं सभी तर्कों को नई लाइनों पर रखूंगा।

+0

उत्कृष्ट बिंदु "प्रस्तुत करना (" – Art

+0

+1 दिलचस्प मैं इस शैली की कभी नहीं सोचा है के लिए खोज पर –

9

अजगर की आधिकारिक PEP-8 पहले एक पता चलता है।

2

दूसरा ऐसा लगता है जैसे यह सी [# +] * प्रोग्राम से बच निकला। बैकस्लाश लाइन निरंतरता बदसूरत है, पीछे की जगह के साथ परेशानी का सामना करना पड़ता है, और इसका उपयोग करने के लिए कोई बहाना नहीं है जब आपको() या [] उपयोग करने के लिए मिलता है।

+0

+1 बैकस्लैश का उपयोग कभी नहीं, वहाँ हमेशा एक बेहतर विकल्प है।। (__future__ आयात ब्रेसिज़ – u0b34a0f6ae

+0

के अंदर निरंतरता, शायद आप '__future__ आयात ब्रेसिज़' से थे। सोहेलप आयात बैकटिक्स ' –

+0

से –

7

मुझे क्या करना होगा:

vars = { 
    'var1' : value1, 
    'var2' : value2, 
    'var3' : value3, 
} 
return render(request, template, vars) 
+1

+1 से, सुझाए गए दृष्टिकोणों का सबसे सुंदर। –

+3

+1 बस आप * यह सब एक कथन में कर सकते हैं इसका मतलब यह नहीं है कि आपको * चाहिए *। –

संबंधित मुद्दे