Https://docs.python.org/3/references/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"
উপলব্ধ স্মৃতিতে কী সংরক্ষণ করা যায় তা বাদ দিয়ে পূর্ণসংখ্যার আক্ষরিক দৈর্ঘ্যের কোনও সীমা নেই is
নোট করুন যে একটি শূন্য-দশমিক সংখ্যায় শীর্ষস্থানীয় শূন্যগুলি অনুমোদিত নয়। এটি সি-স্টাইলের অক্টাল লিটারালগুলির সাথে অসম্পূর্ণতার জন্য, যা পাইথন ভার্সন 3.0 এর আগে ব্যবহার করেছিল।
এখানে উল্লিখিত হিসাবে, একটি শূন্য- দশমিক সংখ্যাতে শীর্ষস্থানীয় শূন্যগুলি অনুমোদিত নয়। "0"+
একটি খুব বিশেষ কেস হিসাবে আইনী, যা পাইথন 2 তে উপস্থিত ছিল না :
integer ::= decimalinteger | octinteger | hexinteger | bininteger
decimalinteger ::= nonzerodigit digit* | "0"
octinteger ::= "0" ("o" | "O") octdigit+ | "0" octdigit+
এসভিএন কমিট r55866 টোকেনাইজারে পিইপি 3127 প্রয়োগ করেছে, যা পুরাতন 0<octal>
সংখ্যাগুলি নিষিদ্ধ করে । তবে কৌতূহলজনকভাবে, এটি এই নোটটি যুক্ত করে:
/* in any case, allow '0' as a literal */
একটি বিশেষ nonzero
পতাকা রয়েছে যা কেবলমাত্র একটি SyntaxError
অঙ্কিত করে যদি নিম্নলিখিত সংখ্যার ক্রমটিতে একটি ননজারো অঙ্ক থাকে।
এটি বিজোড় কারণ পিইপি 3127 এই কেসটিকে অনুমতি দেয় না:
এই পিইপি প্রস্তাব দেয় যে শীর্ষস্থানীয় শূন্যটি ব্যবহার করে অষ্টাল সংখ্যা নির্দিষ্ট করার ক্ষমতাটি পাইথন 3.0.০ (এবং পাইথন preview.০ প্রিভিউ মোড ২. 2. ) এর ভাষা থেকে মুছে ফেলা হবে এবং যখন একটি শীর্ষস্থানীয় "0" থাকবে তখন সিন্ট্যাক্সেরর উত্থাপিত হবে তাত্ক্ষণিকভাবে অন্য একটি সংখ্যা অনুসরণ করে ।
(জোর আমার)
সুতরাং, একাধিক জিরো অনুমোদিত হ'ল প্রযুক্তিগতভাবে পিইপি লঙ্ঘন করছে এবং মূলত জর্জ ব্র্যান্ডেল একটি বিশেষ মামলা হিসাবে প্রয়োগ করেছিলেন। তিনি সম্পর্কিত ডকুমেন্টেশন পরিবর্তন করে নোট করুন যে "0"+
এটি একটি বৈধ মামলা ছিল decimalinteger
(আগে যা এর আওতাধীন ছিল octinteger
)।
আমরা সম্ভবত কখনই জানতে পারবে না ঠিক কেন গেয়র্গ করতে বেছে নেওয়া হয়েছে "0"+
বৈধ - এটা সব সময় প্রবেশ করুন পাইথন মধ্যে একটি বিজোড় কোণ ক্ষেত্রে থাকতে পারে।
আপডেট [২৮ জুলাই ২০১৫]: এই প্রশ্নটি অজগর-ধারণাগুলির উপর একটি সজীব আলোচনার সূচনার দিকে পরিচালিত করেছিল যেখানে জর্জি এই সিদ্ধান্ত নিয়েছিলেন :
স্টিভেন ডি অ্যাপ্রানো লিখেছেন:
কেন এটি এভাবে সংজ্ঞায়িত করা হয়েছিল? [...] আমরা শূন্য পেতে 0000 লিখব কেন?
আমি আপনাকে বলতে পারতাম, তবে তবে আপনাকে হত্যা করতে হবে।
গেয়র্গ
পরে, থ্রেডটি এই বিশেষ কেসটি থেকে মুক্তি পাওয়ার লক্ষ্যে এই বাগ রিপোর্টটি তৈরি করেছিল । এখানে, জর্জি বলেছেন :
আমি এই ইচ্ছাকৃত পরিবর্তনের কারণ মনে করি না (যেমন ডক্স পরিবর্তন থেকে দেখা গেছে)।
আমি এখন এই পরিবর্তনের একটি ভাল কারণ নিয়ে আসতে পারছি না [...]
এবং এইভাবে আমাদের কাছে এটি রয়েছে: এই অসঙ্গতির পিছনে সুনির্দিষ্ট কারণটি সময়ের সাথে হারিয়ে যায়।
পরিশেষে, নোট করুন যে বাগ রিপোর্টটি প্রত্যাখ্যান করা হয়েছিল: নেতৃস্থানীয় শূন্যগুলি কেবল পাইথন ৩.x এর জন্য কেবল শূন্য পূর্ণসংখ্যায় গ্রহণযোগ্য হবে।