Last chance! 50% off DataCamp Premium
Sale ends in
"Python और बड़े संख्याएँ।" छवि: लेखक द्वारा DALL·E का उपयोग करके
हर प्रोग्रामिंग भाषा के अपने तरीके होते हैं जिनसे वह वेरिएबल्स को संग्रहीत करती है, और Python भी इसका अपवाद नहीं है। दरअसल, अपनी भाषा के एक अनोखे पहलू – अधिकतम पूर्णांक मान – को संभालने में Python स्वयं पूरी तरह सुसंगत नहीं रहा है।
इस ट्यूटोरियल में, हम Python में अधिकतम पूर्णांक मानों पर नज़र डालेंगे और Python 2 तथा Python 3 के बीच के अंतर को समझेंगे। हम जानेंगे कि अधिकतम पूर्णांक मान जानना क्यों मायने रखता है और बड़े संख्याओं के साथ काम करते समय आम गलतियों से कैसे बचें। अंततः, हम समझेंगे कि Python में बड़े संख्याओं के साथ प्रभावी ढंग से कैसे काम किया जाए, जिससे हम बेहतर Python प्रोग्रामर बनें।
Python के अधिकतम पूर्णांक मान को समझने के लिए, हमें पहले यह देखना होगा कि हम कौन-सा Python संस्करण उपयोग कर रहे हैं, क्योंकि Python 2 और Python 3 में उत्तर अलग होगा।
Python 2 के लिए, पूर्णांक प्रकार का अधिकतम मान इस बात पर भी निर्भर करता था कि हम 32-बिट सिस्टम पर हैं या 64-बिट पर।
किसी भी सिस्टम में, यदि कोई संख्या इन सीमाओं से बाहर होती थी, तो int डेटा प्रकार अपने-आप long में बदल जाता था। long डेटा प्रकार की कोई ऊपरी सीमा नहीं थी, सिवाय इसके कि वह सिस्टम में उपलब्ध मेमोरी से सीमित होती थी।
हालाँकि Python 3 में, क्योंकि int डेटा प्रकार मनमानी सटीकता को सपोर्ट करता है, बड़े संख्याओं के साथ काम करते समय Python को int प्रकार को long में बदलने की आवश्यकता नहीं पड़ती। Python 2 के long डेटा प्रकार की तरह, Python 3 में int डेटा प्रकार भी केवल उपलब्ध मेमोरी की मात्रा से सीमित होता है। वास्तव में, क्योंकि Python 3 में पूर्णांकों के आकार की कोई प्रभावी ऊपरी सीमा नहीं है, long डेटा प्रकार Python 3 में मौजूद ही नहीं है।
| Python संस्करण | डेटा प्रकार | सिस्टम आर्किटेक्चर | अधिकतम मान |
|---|---|---|---|
| Python 2 | int | 32-bit | (2^31 - 1) या 2,147,483,647 |
| Python 2 | int | 64-bit | (2^63 - 1) या 9,223,372,036,854,775,807 |
| Python 2 | long | 32-bit | केवल उपलब्ध मेमोरी से सीमित |
| Python 2 | long | 64-bit | केवल उपलब्ध मेमोरी से सीमित |
| Python 3 | int | 32-bit | केवल उपलब्ध मेमोरी से सीमित |
| Python 3 | int | 64-bit | केवल उपलब्ध मेमोरी से सीमित |
Python 2 बनाम Python 3: अधिकतम मान
Python 2 वर्ष 2000 में जारी हुआ था, जबकि Python 3 वर्ष 2008 में। Python 3 मूलतः Python 2 का प्रतिस्थापन है और इसे Python 2 की कई कमियों को दूर करने के लिए विकसित किया गया था, जिनमें बड़े पूर्णांकों को संभालने का तरीका भी शामिल है।
ऐसा क्यों था कि Python 2 में पूर्ण संख्याओं का प्रतिनिधित्व या तो int या long डेटा प्रकारों से किया जाता था, जहाँ int निश्चित आकार की संख्याओं को संभालता था और long मनमाने ढंग से बड़े पूर्णांकों को? दरअसल, ऐसा करने के पीछे कारण थे। यह दोहरा सिस्टम प्रदर्शन संबंधी विचारों और आधारभूत C इम्प्लीमेंटेशनों के साथ अनुकूलता की आवश्यकता के कारण था।
Python 3 इस प्रक्रिया को सरल बनाता है और int तथा long को मिलाकर एक ही int प्रकार प्रदान करता है। यह नया int प्रकार बिना किसी पूर्व-निर्धारित सीमा के बड़े पूर्णांकों का प्रतिनिधित्व करने में सक्षम है, जिससे लचीलापन बढ़ता है और ओवरफ़्लो एरर, डेटा ट्रंकेशन और रैप-अराउंड जैसी समस्याएँ समाप्त होती हैं।
Python 3 यह कार्य मनमानी-सटीकता अंकगणित (arbitrary-precision arithmetic), जिसे bignum या unbounded integer arithmetic भी कहते हैं, का उपयोग करके करता है। Arbitrary-precision arithmetic अंकों की परिवर्तनशील-लंबाई वाली ऐरे का उपयोग संख्याओं को दर्शाने के लिए करता है, जिससे सटीकता एक निश्चित बिट संख्या के बजाय सिस्टम में उपलब्ध मेमोरी से ही सीमित होती है। नतीजतन, पूर्णांक उपलब्ध मेमोरी की सीमा तक जितने बड़े होने चाहिए उतने बड़े हो सकते हैं, क्योंकि Python 3 मानक फिक्स्ड साइज (चाहे 32-बिट हो या 64-बिट आर्किटेक्चर) की क्षमता से आगे बढ़ते ही पूर्णांक के आकार के अनुसार गतिशील रूप से अधिक मेमोरी आवंटित करता है।
अन्य डेटा प्रकारों का व्यापक अवलोकन करने के लिए, जिसमें यह भी शामिल है कि float का उपयोग दशमलव बिंदुओं के लिए कैसे होता है, Data Types for Data Science in Python देखें।
आपके Python संस्करण द्वारा समर्थित अधिकतम पूर्णांक को समझना मेमोरी उपयोग और प्रदर्शन के निहितार्थ समझने के लिए महत्वपूर्ण है। सीमाओं के बाहर के पूर्णांकों का उपयोग करने का प्रयास ओवरफ़्लो एरर, डेटा ट्रंकेशन या अप्रत्याशित परिणामों, जैसे रैप-अराउंड, का कारण बन सकता है। प्रोग्रामिंग संदर्भ में यदि यह अनदेखा रह जाए, तो इससे तरह-तरह की समस्याएँ हो सकती हैं:
इस खंड में, हम अपने Python परिवेश में अधिकतम पूर्णांक आकार का पता लगाने के तरीकों को करीब से देखेंगे।
Python 2 में अधिकतम int मान खोजने के लिए, हम निम्नलिखित कोड पंक्ति का उपयोग कर सकते हैं:
sys.maxintयह उस सबसे बड़े पूर्णांक मान को लौटाता है जिसे इंटरप्रेटर प्रबंधित कर सकता है। मान लें, इस उदाहरण के लिए, हम 32-बिट सिस्टम का उपयोग कर रहे हैं। हमारे कोड का आउटपुट कुछ इस प्रकार होगा:
2147483647Python 3 में अधिकतम int मान अनबाउंडेड है। हम निम्नलिखित कोड पंक्ति का उपयोग करके देख सकते हैं कि हमारे सिस्टम पर इंडेक्स के रूप में उपयोग किए जा सकने वाले अधिकतम पूर्णांक की संख्या क्या है। इसे आमतौर पर (2**(आपके कंप्यूटर के बिट आकार))-1 के रूप में गणना किया जाता है।
sys.maxsizeबहुत बड़े या बहुत छोटे पूर्णांकों के साथ काम करते समय, डेवलपर्स को Python 2 और अन्य प्रोग्रामिंग भाषाओं में ओवरफ़्लो त्रुटियों जैसी कठिनाइयों का सामना करना पड़ सकता है। हालाँकि, Python 3 की डायनेमिक टाइपिंग के साथ, ये समस्याएँ अतीत की बात हो गई हैं।
पर इसका मतलब यह नहीं है कि आप मनमाने ढंग से बड़े संख्याओं का उपयोग बिना किसी परिणाम के कर सकते हैं। असाधारण रूप से बड़े संख्याएँ अधिक मेमोरी लेंगी और सामान्यतः आपके प्रोग्राम को धीमा करेंगी। यह समझना महत्वपूर्ण है कि जब निश्चित पूर्णांक सीमाएँ न भी हों, तब भी आपके डिवाइस की मेमोरी सीमाएँ क्या हैं।
डेटा वैज्ञानिक अक्सर बड़े संख्यात्मक डेटासेट्स के साथ काम करते हैं, जिनमें पूर्णांकों के निरूपण पर सावधानीपूर्वक विचार आवश्यक होता है। इस वास्तविकता को देखते हुए, बड़े संख्याओं के साथ काम करते समय आप कुछ सर्वोत्तम प्रथाएँ अपना सकते हैं।
अपने डेटा की रेंज जानें: यह स्टोरेज और गणना को अनुकूलित करने के लिए महत्वपूर्ण है।
अपने डेटा प्रकार चुनें: यदि आप Python 2 में काम कर रहे हैं, तो अपने डेटा के आकार और सटीकता की आवश्यकताओं के आधार पर तय करें कि int या long डेटा प्रकार का उपयोग करें।
कहीं और मेमोरी उपयोग का अनुकूलन करें: बड़े पूर्णांक काफी मेमोरी का उपभोग करते हैं। उदाहरण के लिए, अपने डेटा की अनावश्यक प्रतियाँ कम करके अन्य स्थानों पर मेमोरी उपयोग को अनुकूलित करें।
अनावश्यक रूपांतरण कम करें: यह डेटा निरूपण में स्थिरता सुनिश्चित करने में मदद करता है।
संभावित ओवरफ़्लो त्रुटियों का ध्यान रखें: बड़े पूर्णांकों पर अंकगणितीय क्रियाएँ करते समय ओवरफ़्लो त्रुटियों पर नज़र रखें और सुरक्षा जाँचें लागू करें, विशेषकर Python 2 में।
प्रदर्शन बाधाओं की पहचान के लिए अपने कोड का प्रोफाइल करें और महत्वपूर्ण हिस्सों का अनुकूलन करें ताकि दक्षता बेहतर हो। इससे आपके कोड की समग्र कार्यक्षमता सुधरेगी।
महत्वपूर्ण फंक्शनल प्रोग्रामिंग तकनीकों को सीखने के लिए हमारा कोर्स Writing Efficient Python Code देखें।
पूर्णांकों के प्रति Python 3 का दृष्टिकोण संख्यात्मक गणना और डेटा विश्लेषण के लिए संभावनाओं की एक दुनिया खोलता है। अपने सिस्टम के अधिकतम पूर्णांक को समझकर और बड़े संख्याओं के साथ काम करने की सर्वोत्तम प्रथाओं को अपनाकर, आप अपने कोड की पूरी क्षमता को खोल सकते हैं।
जानें कि Python डेटा प्रकारों को कैसे संग्रहीत करता है, इसके लिए DataCamp का Introduction to Python for Data Science कोर्स देखें। आप इस कोर्स में Python की मूल बातें भी सीख सकते हैं। अधिक जानकारी के लिए मैं आपको DataCamp के डेटा स्ट्रक्चर ट्यूटोरियल को भी देखने की सलाह देता/देती हूँ।
मैं एक पीएचडी हूँ, जिसके पास जैविक अनुसंधान परिवेश में डेटा के साथ काम करने का 13 वर्षों का अनुभव है। मैं Python, MATLAB और R सहित कई प्रोग्रामिंग भाषाओं में सॉफ्टवेयर बनाती/बनाता हूँ। मुझे सीखने के प्रति अपने प्रेम को दुनिया के साथ साझा करने का जुनून है।
DataCamp के साथ Python सीखें
{count, plural, one {कोर्स} other {कोर्स}}
{count, plural, one {कोर्स} other {कोर्स}}
{count, plural, one {कोर्स} other {कोर्स}}