Python में वेरिएबल क्या है?
वेरिएबल एक नाम है जो कंप्यूटर मेमोरी में किसी ऑब्जेक्ट को रेफर करता है। Python में वेरिएबल्स का कोई फिक्स्ड टाइप नहीं होता। टाइप उस ऑब्जेक्ट का होता है जिसे वेरिएबल पॉइंट कर रहा है।
x = 42
x = "अब यह स्ट्रिंग है"
Python में लोकल वेरिएबल्स
लोकल वेरिएबल्स की परिभाषा
लोकल वेरिएबल फंक्शन के अंदर डिफाइन किया जाता है और केवल उसी फंक्शन के अंदर एक्सेस किया जा सकता है। फंक्शन के खत्म होने के बाद यह मेमोरी से हट जाता है।
def say_hello():
name = "Python" # लोकल वेरिएबल
print("नमस्ते,", name)
say_hello()
# print(name) # Error: name डिफाइन नहीं है
name वेरिएबल केवल say_hello फंक्शन के अंदर ही मौजूद है और इसके बाहर एक्सेस नहीं किया जा सकता।
लोकल वेरिएबल्स के फायदे
लोकल वेरिएबल्स डेटा को आइसोलेट रखते हैं और प्रोग्राम के दूसरे हिस्सों से अनचाहे बदलाव को रोकते हैं। फंक्शन खत्म होने पर ये अपने आप मेमोरी फ्री कर देते हैं।
Python में ग्लोबल वेरिएबल्स
ग्लोबल वेरिएबल्स क्या हैं?
ग्लोबल वेरिएबल सभी फंक्शन्स के बाहर डिक्लेयर किया जाता है और प्रोग्राम फाइल में कहीं भी एक्सेस किया जा सकता है। ये प्रोग्राम के पूरे रनटाइम के दौरान अपनी वैल्यू बनाए रखते हैं।
language = "Python" # ग्लोबल वेरिएबल
def show():
print("भाषा:", language)
show() # भाषा: Python
ग्लोबल वेरिएबल्स बदलने में समस्या
फंक्शन के अंदर ग्लोबल वेरिएबल को बदलने की कोशिश करने पर एरर आती है:
counter = 0
def increment():
counter += 1 # UnboundLocalError!
Python counter को लोकल वेरिएबल मान लेता है क्योंकि इसमें असाइनमेंट ऑपरेशन हो रहा है, लेकिन यह लोकली डिफाइन नहीं है।
global कीवर्ड
ग्लोबल वेरिएबल्स बदलने के लिए global का उपयोग
global कीवर्ड फंक्शन के अंदर ग्लोबल वेरिएबल्स को बदलने की अनुमति देता है:
count = 0
def increment():
global count
count += 1
increment()
print(count) # 1
गणितीय ऑपरेशन में global का उपयोग
total = 0
def add(x):
global total
total += x
add(10)
add(20)
print(total) # 30
global का उपयोग कब करें
global कीवर्ड का उपयोग सावधानी से करना चाहिए, क्योंकि इससे प्रोग्राम की डिबगिंग मुश्किल हो सकती है और कोड कम पढ़ने योग्य हो जाता है।
स्कोप: LEGB नियम
वेरिएबल खोजने का सिद्धांत
Python LEGB नियम के अनुसार वेरिएबल्स को इस क्रम में खोजता है:
- L (Local) — वर्तमान फंक्शन के अंदर
- E (Enclosing) — नेस्टेड फंक्शन्स में
- G (Global) — मॉड्यूल लेवल पर
- B (Built-in) — Python के बिल्ट-इन नाम
LEGB नियम का उदाहरण
x = "global"
def outer():
x = "enclosing"
def inner():
x = "local"
print(x)
inner()
outer() # local
Python x वेरिएबल को लोकल एरिया में ढूंढ लेता है और उसकी वैल्यू का उपयोग करता है।
nonlocal कीवर्ड
नेस्टेड फंक्शन्स के वेरिएबल्स तक पहुंच
nonlocal कीवर्ड का उपयोग बाहरी (लेकिन ग्लोबल नहीं) स्कोप के वेरिएबल्स के साथ काम करने के लिए किया जाता है:
def outer():
count = 0
def inner():
nonlocal count
count += 1
return count
return inner
f = outer()
print(f()) # 1
print(f()) # 2
global और nonlocal में अंतर
global कीवर्ड मॉड्यूल लेवल के वेरिएबल्स के साथ काम करता है, जबकि nonlocal बाहरी फंक्शन्स के वेरिएबल्स के साथ काम करता है जो एक ही स्कोप के अंदर हों।