प्रति https://docs.python.org/3/reference/lexical_analysis.html#integer-literals :
निम्नलिखित शाब्दिक परिभाषाओं द्वारा पूर्णांक का वर्णन किया गया है:
integer ::= decimalinteger | octinteger | hexinteger | bininteger
decimalinteger ::= nonzerodigit digit* | "0"+
nonzerodigit ::= "1"..."9"
digit ::= "0"..."9"
octinteger ::= "0" ("o" | "O") octdigit+
hexinteger ::= "0" ("x" | "X") hexdigit+
bininteger ::= "0" ("b" | "B") bindigit+
octdigit ::= "0"..."7"
hexdigit ::= digit | "a"..."f" | "A"..."F"
bindigit ::= "0" | "1"
उपलब्ध मेमोरी में क्या संग्रहीत किया जा सकता है इसके अलावा पूर्णांक शाब्दिक की लंबाई के लिए कोई सीमा नहीं है।
ध्यान दें कि शून्य शून्य दशमलव संख्या में अग्रणी शून्य की अनुमति नहीं है। यह सी-स्टाइल ऑक्टल शाब्दिक विस्मरण के लिए है, जिसे पायथन ने 3.0 संस्करण से पहले इस्तेमाल किया था।
जैसा कि यहां उल्लेख किया गया है, एक शून्य शून्य दशमलव संख्या में अग्रणी शून्य की अनुमति नहीं है। "0"+
एक बहुत ही विशेष मामले के रूप में कानूनी है, जो पायथन 2 में मौजूद नहीं था :
integer ::= decimalinteger | octinteger | hexinteger | bininteger
decimalinteger ::= nonzerodigit digit* | "0"
octinteger ::= "0" ("o" | "O") octdigit+ | "0" octdigit+
SVN प्रतिबद्ध r55866 ने टोकन में PEP 3127 लागू किया, जो पुरानी 0<octal>
संख्याओं को मना करता है । हालांकि, उत्सुकता से, यह इस नोट को भी जोड़ता है:
/* in any case, allow '0' as a literal */
एक विशेष nonzero
ध्वज के साथ जो केवल तभी फेंकता है SyntaxError
यदि अंकों के निम्नलिखित अनुक्रम में एक गैर-अक्ष अंक होता है।
यह अजीब है क्योंकि PEP 3127 इस मामले की अनुमति नहीं देता है:
इस पीईपी का प्रस्ताव है कि पायथन 3.0 (और पायथन 3.0 पूर्वावलोकन मोड 2.6) में भाषा से एक प्रमुख शून्य का उपयोग करके एक ऑक्टल संख्या को निर्दिष्ट करने की क्षमता को हटा दिया जाएगा, और जब भी एक प्रमुख "0" होगा, तो सिंटैक्सएयर उठाया जाएगा। इसके तुरंत बाद एक और अंक ।
(जोर मेरा)
इसलिए, यह तथ्य कि एकाधिक शून्य की अनुमति है तकनीकी रूप से पीईपी का उल्लंघन कर रहा है, और मूल रूप से जॉर्ज ब्रैंडल द्वारा एक विशेष मामले के रूप में लागू किया गया था। उन्होंने नोट करने के लिए संबंधित दस्तावेज में बदलाव किया जो कि (पहले कवर किया गया था ) के "0"+
लिए एक वैध मामला decimalinteger
था octinteger
।
हम शायद कभी पता नहीं चलेगा कि वास्तव में क्यों जोर्ज बनाने के लिए चुना है "0"+
वैध - यह हमेशा के लिए पायथन में एक अजीब कोने मामले रह सकती है।
अद्यतन [२D जुलाई २०१५]: इस सवाल ने अजगर-विचारों पर एक जीवंत चर्चा सूत्र का नेतृत्व किया , जिसमें जॉर्ज ने इसमें भाग लिया :
स्टीवन डी 'अरानो ने लिखा:
इसे इस तरह परिभाषित क्यों किया गया? [...] हम शून्य पाने के लिए 0000 क्यों लिखेंगे?
मैं आपको बता सकता था, लेकिन फिर मुझे आपको मारना होगा।
जोर्ज
बाद में, इस विशेष रिपोर्ट से छुटकारा पाने के उद्देश्य से थ्रेड ने इस बग रिपोर्ट को जन्म दिया। यहाँ, जॉर्ज कहते हैं :
मुझे इस जानबूझकर परिवर्तन का कारण याद नहीं है (जैसा कि डॉक्स परिवर्तन से देखा जाता है)।
मैं इस बदलाव के लिए एक अच्छे कारण के साथ आने में असमर्थ हूँ [...]
और इस प्रकार हमारे पास है: इस असंगति के पीछे सटीक कारण समय के लिए खो गया है।
अंत में, ध्यान दें कि बग रिपोर्ट को अस्वीकार कर दिया गया था: अग्रणी शून्य को शेष पाइथर्स 3.x पर शून्य पूर्णांक पर स्वीकार किया जाना जारी रहेगा।