पर्ल जैसी भाषाओं की तुलना में, पायथन में सीमित संख्या में नियंत्रण निर्माण हैं:
- केवल
if
और नहीं unless
,
- केवल
for
वह जो दृश्यों पर आधारित है और foreach
सी या शैली नहीं है for
,
- केवल वही
while
जो हर लूप की स्थिति की जांच करता है और नहीं do-while
,
- केवल
if-elif
और नहीं switch
,
- केवल एक टिप्पणी का निर्माण है
#
, और हर पंक्ति के लिए आप बता सकते हैं कि क्या यह पिछली लाइनों को देखे बिना टिप्पणी की गई है या नहीं।
इसके अलावा, अपने स्रोत को इंडेंट करने का लगभग एक तरीका है; रचनात्मक इंडेंटेशन के अधिकांश मामलों को कृत्रिम रूप से बाहर रखा गया है।
यह मनुष्यों के लिए पायथन स्रोत को आसान बनाता है।
अंतर्निहित प्रकार और मानक पुस्तकालय में न्यूनतम-लेकिन-पूर्ण होने के प्रयास हैं।
- परिवर्तनशील सूची के लिए आप केवल निर्मित
list
प्रकार का उपयोग करते हैं ; अधिकांश कार्यों के लिए यह O (1) है, और आपको कभी भी सही कार्यान्वयन का चयन नहीं करना होगा,
- अपरिवर्तनीय सूचियों के लिए, समान रूप से, आप बस
tuple
प्रकार का उपयोग करते हैं ,
- नक्शों के लिए, आप केवल ऐसे बिल्ट-इन का उपयोग करते हैं,
dict
जो कि ज्यादातर मामलों में कुशल हो, कोई विचार करने की आवश्यकता नहीं है जिसे उपयोग करने के लिए क्रियान्वयन करना है।
पायथन 3 इसे पूर्णांक तक विस्तारित करता है: कोई फर्क नहीं पड़ता कि आपका पूर्णांक कितना बड़ा है, आप एक ही प्रकार का उपयोग करते हैं और कभी भी ज़बरदस्ती की परवाह नहीं करते हैं।
पायथन सिंटैक्टिक शुगर से बचने की कोशिश करता है। लेकिन कभी-कभी यह स्पष्ट रूप से स्पष्ट करने के लिए सिंटैक्टिक चीनी को जोड़ता है। आप if foo is not None
इसके बजाय लिख सकते हैं if not (foo is None)
क्योंकि 'नहीं है' विशेष-आवरण है। अभी भी foo is not None
आसानी से पढ़ता है, गलत व्याख्या नहीं की जा सकती है, और आपको सोचने की ज़रूरत नहीं है, आप सिर्फ स्पष्ट बात लिखते हैं।
बेशक, पायथन में अधिकांश जटिल चीजें कई तरीकों से की जा सकती हैं। आप घोषणा या सरल स्लॉट असाइनमेंट द्वारा कक्षाओं में विधियां जोड़ सकते हैं, आप कई रचनात्मक तरीकों से कार्यों के लिए तर्क पारित कर सकते हैं, आदि यह सिर्फ इसलिए है क्योंकि भाषा के आंतरिक अधिकतर उजागर होते हैं।
कुंजी यह है कि हमेशा एक तरीका होता है जो सबसे अच्छा, कवर-ऑल केस होता है। यदि अन्य तरीके मौजूद हैं, तो उन्हें समान विकल्पों (जैसे if
और unless
) के रूप में नहीं जोड़ा गया था, लेकिन केवल आंतरिक कामकाज को उजागर करते हैं। धीरे-धीरे लेकिन लगातार ऐसे विकल्पों को ज्ञात सर्वोत्तम तंत्र को बढ़ाकर (समाप्त नहीं!) किया जाता है।
सज्जाकार AOP फ़ंक्शन कॉल को लपेटते हैं। 2.6 से पहले आपको __metaclass__
क्लास के मेटाक्लास घोषित करने के लिए जादू के सदस्य का उपयोग करना था ; अब आप इसके लिए एक ही डेकोरेटर सिंटैक्स का उपयोग कर सकते हैं। 3.0 से पहले आपके पास दो तरह के स्ट्रिंग्स थे, बाइट-ओरिएंटेड और यूनिकोड, जिसे आप अनजाने में मिला सकते थे। अब आपके पास एकमात्र यूनिकोड str
और एकमात्र बाइनरी-पारदर्शी है bytes
, जिसे आप गलती से नहीं मिला सकते हैं।
"""
टिप्पणियों (डोकस्ट्रिंग्स) को मत भूलना । ये कई लाइनों को फैलाते हैं।