डेटा हैंडलिंग (Data Handling) अध्याय में हम पाइथन में डेटा को प्रबंधित करने के विभिन्न तरीकों का अध्ययन करते हैं। पिछले अध्याय में हमने मूल डेटा प्रकार (int, float, str, bool) और ऑपरेटरों के बारे में जाना। इस अध्याय में हम इन डेटा प्रकारों का गहन विश्लेषण करेंगे, जिसमें डेटा प्रकार रूपांतरण (Type Conversion), अंकगणितीय संचालन, स्ट्रिंग संचालन, प्रीमेटिव और कम्पोज़िट डेटा प्रकार, तथा None और मेमोरी प्रबंधन की अवधारणाएँ शामिल हैं। डेटा हैंडलिंग की मजबूत समझ प्रोग्राम लिखने की कुशलता बढ़ाती है।
पाइथन में सब कुछ एक वस्तु (Object) है। प्रत्येक वस्तु का एक प्रकार (Type), एक मान (Value) और एक मेमोरी पता (Identity) होता है।
पाइथन स्वचालित रूप से एक डेटा प्रकार को दूसरे में बदलता है जब गणितीय संचालन में भिन्न प्रकार के मान शामिल होते हैं। इसे कोट्सन (Coercion) भी कहते हैं। उदाहरण के लिए, int और float के बीच संचालन में int स्वतः float में बदल जाता है।
x = 5 # int
y = 2.5 # float
z = x + y # 7.5 (float)
print(type(z))
यहाँ x (int) को स्वतः float में बदल दिया गया क्योंकि float, int की तुलना में उच्च श्रेणी का है।
जब हम स्वयं किसी डेटा प्रकार को दूसरे में बदलते हैं तो इसे एक्सप्लिसिट रूपांतरण या टाइप कास्टिंग (Type Casting) कहते हैं। इसके लिए int(), float(), str(), bool() जैसे फ़ंक्शन का उपयोग होता है।
a = "10"
b = int(a) # 10 (int)
c = float(a) # 10.0 (float)
d = str(25) # "25" (str)
e = bool(0) # False
f = bool(5) # True
int("10.5") अमान्य है क्योंकि "10.5" एक वैध पूर्णांक स्ट्रिंग नहीं है।int("नमस्ते") अमान्य है क्योंकि अक्षरों को पूर्णांक में नहीं बदला जा सकता।ValueError या TypeError उत्पन्न होती है।पाइथन में सभी अंकगणितीय संचालक (जोड़, घटाव, गुणा, भाग, पूर्णांक भाग, शेषफल, घात) का उपयोग डेटा प्रकारों के साथ किया जा सकता है।
a = 7
b = 2
print(a + b) # 9
print(a - b) # 5
print(a * b) # 14
print(a / b) # 3.5
print(a // b) # 3
print(a % b) # 1
print(a ** b) # 49
किसी संख्या को शून्य से भाग देने पर ZeroDivisionError उत्पन्न होती है। उदाहरण: 10 / 0 अमान्य है।
स्ट्रिंग एक वर्ण अनुक्रम है जो कोट्स ('...' या "...") में लिखा जाता है। स्ट्रिंग पर निम्नलिखित संचालन होते हैं:
+ ऑपरेटर दो स्ट्रिंगों को जोड़ता है।
first = "कक्षा"
second = "11"
full = first + second # "कक्षा11"
* ऑपरेटर स्ट्रिंग को निर्दिष्ट बार दोहराता है।
name = "हा" * 3 # "हाहाहा"
in और not in यह जाँचते हैं कि कोई उप-स्ट्रिंग स्ट्रिंग में मौजूद है या नहीं।
print("py" in "python") # True
print("xy" not in "python") # True
स्ट्रिंग का हिस्सा निकालने के लिए स्लाइसिंग का उपयोग होता है। syntax: string[start:end:step]। अंतिम इंडेक्स शामिल नहीं होता।
s = "पाइथन प्रोग्रामिंग"
print(s[0:5]) # पहले 5 वर्ण
print(s[5:]) # 5 से अंत तक
print(s[-3:]) # अंतिम 3 वर्ण
print(s[:4]) # प्रारंभ से 4 वर्ण
None पाइथन का विशेष मान है जो किसी चर के अस्तित्व को बिना मान के दर्शाता है। इसका प्रकार NoneType है।
x = None
print(x) # None
print(type(x)) # <class 'NoneType'>
पाइथन में मेमोरी का आवंटन और मुक्तिकरण स्वचालित रूप से होता है। जब कोई वस्तु अनुपयोगी हो जाती है, तो गार्बेज कलेक्टर (Garbage Collector) उसे मेमोरी से हटा देता है। id() फ़ंक्शन किसी वस्तु के मेमोरी पते की पहचान संख्या देता है।
x = 10
print(id(x)) # वस्तु का पहचान संख्या
y = x
print(id(y)) # समान वस्तु को दर्शाता है
int, float, str अपरिवर्तनीय (Immutable) हैं। इसका अर्थ है कि किसी चर का मान बदलने पर वास्तव में नई वस्तु बनती है, पुरानी वस्तु नहीं बदलती।
x = 5
x = x + 1 # नई वस्तु 6 बनती है, पुरानी वस्तु 5 गार्बेज हो जाती है
print(type(10)) # <class 'int'>
print(type(10.5)) # <class 'float'>
print(type("a")) # <class 'str'>
print(type(True)) # <class 'bool'>
print(type([1, 2])) # <class 'list'>
isinstance() जाँचता है कि कोई मान किसी विशेष प्रकार का है या नहीं।
print(isinstance(10, int)) # True
print(isinstance(10.5, int)) # False
print(isinstance("a", str)) # True
f = float(input("फ़ारेनहाइट तापमान दर्ज करें: "))
c = (f - 32) * 5 / 9
print("सेल्सियस तापमान:", c)
a = int(input("पहली संख्या: "))
b = int(input("दूसरी संख्या: "))
print("भागफल:", a // b)
print("शेषफल:", a % b)
r = float(input("त्रिज्या: "))
circumference = 2 * 3.14 * r
print("परिधि:", circumference)
जब हम input() से डेटा लेते हैं तो वह स्ट्रिंग होता है। दो संख्याओं का योग निकालने के लिए पहले उन्हें int या float में बदलना आवश्यक है, अन्यथा स्ट्रिंग संयोजन हो जाएगा। नीचे दिए गए प्रोग्राम में यह स्पष्ट दिखता है:
x = input("पहली संख्या: ")
y = input("दूसरी संख्या: ")
print("बिना रूपांतरण:", x + y) # "12" + "34" = "1234" (स्ट्रिंग जुड़ता है)
print("रूपांतरण के बाद:", int(x) + int(y)) # 12 + 34 = 46
a = float(input("किसी दशमलव संख्या के लिए: "))
b = float(input("अन्य दशमलव संख्या: "))
print("योग:", a + b)
किसी भी अंकगणितीय संचालन में यदि कोई एक संख्या float है, तो परिणाम भी float होगा। उदाहरण के लिए, 7 + 2.5 का परिणाम 9.5 (float) है, जबकि 7 + 2 का परिणाम 9 (int) है। पूर्णांक भाग (//) और शेषफल (%) केवल पूर्णांकों के लिए पूर्ण समझ में आते हैं, परंतु float पर भी लागू किए जा सकते हैं; जैसे 7.5 // 2 = 3.0 और 7.5 % 2 = 1.5। शून्य से भाग देने पर चाहे वह / हो या //, हमेशा ZeroDivisionError उत्पन्न होती है। इन नियमों की जानकारी से विद्यार्थी आउटपुट के प्रश्नों में गलतियों से बच सकता है।
| श्रेणी | डेटा प्रकार | परिवर्तनीयता |
|---|---|---|
| प्रीमेटिव | int | Immutable |
| प्रीमेटिव | float | Immutable |
| प्रीमेटिव | str | Immutable |
| प्रीमेटिव | bool | Immutable |
| कम्पोज़िट | list | Mutable |
| कम्पोज़िट | tuple | Immutable |
| कम्पोज़िट | dict | Mutable |
| कम्पोज़िट | set | Mutable |
| फ़ंक्शन | कार्य | उदाहरण | परिणाम |
|---|---|---|---|
| int(x) | पूर्णांक में बदलना | int("10") | 10 |
| float(x) | फ़्लोट में बदलना | float("3.5") | 3.5 |
| str(x) | स्ट्रिंग में बदलना | str(25) | "25" |
| bool(x) | बूलियन में बदलना | bool(0) | False |
| ऑपरेटर | अभिव्यक्ति | परिणाम |
|---|---|---|
| + | a + b | 9 |
| - | a - b | 5 |
| * | a * b | 14 |
| / | a / b | 3.5 |
| // | a // b | 3 |
| % | a % b | 1 |
| ** | a ** b | 49 |
+ के द्वारा जोड़ना, जैसे "उम्र: " + 16 से TypeError आती है।डेटा हैंडलिंग अध्याय में हमने पाइथन में डेटा के प्रकार, रूपांतरण और संचालन की पूरी प्रणाली समझी। प्रीमेटिव और कम्पोज़िट डेटा प्रकारों का वर्गीकरण, इम्प्लिसिट और एक्सप्लिसिट रूपांतरण, अंकगणितीय और स्ट्रिंग संचालन, तथा None और मेमोरी प्रबंधन की अवधारणाएँ विद्यार्थी को कुशल कोड लिखने में सहायक हैं। गलत रूपांतरण और शून्य से भाग जैसी सामान्य त्रुटियों से बचकर विद्यार्थी सुरक्षित प्रोग्राम लिख सकता है। यह अध्याय नियंत्रण प्रवाह, स्ट्रिंग्स, लिस्ट्स, टपल्स और डिक्शनरी जैसे अगले अध्यायों के लिए पक्का आधार तैयार करता है।