पायथन में वेरिएबल्स का स्कोप होता है: ग्लोबल (पूरा प्रोग्राम) या लोकल (केवल फ़ंक्शन के अंदर)।
बुनियादी उदाहरण
def func():
x = "Python" # लोकल वेरिएबल
print(x)
s = "Tutorialspoint" # ग्लोबल वेरिएबल
func()
print(s) # Tutorialspoint
# print(x) # NameError: x लोकल है, यहां एक्सेसिबल नहीं
लोकल वेरिएबल्स
- केवल फ़ंक्शन के अंदर एक्सेसिबल।
- फ़ंक्शन समाप्त होने पर नष्ट हो जाते हैं।
- पैरामीटर्स भी लोकल वेरिएबल्स होते हैं।
def sum(x, y):
total = x + y # लोकल
return total
print(sum(5, 10)) # 15
# print(total) # NameError
ग्लोबल वेरिएबल्स
- पूरे प्रोग्राम में एक्सेसिबल (फ़ंक्शन के अंदर भी)।
- फ़ंक्शन के अंदर पढ़ने के लिए सीधे उपयोग कर सकते हैं।
- फ़ंक्शन के अंदर लिखने/बदलने के लिए
globalकीवर्ड आवश्यक।
z = 25
def func():
global z
print(z) # 25 (ग्लोबल पढ़ा)
z = 20 # ग्लोबल बदला
func()
print(z) # 20 (पूरे प्रोग्राम के लिए बदल गया)
मिश्रित उदाहरण
def func(x, y):
global a
a = 45 # ग्लोबल a सेट
x, y = y, x # लोकल स्वैप
b = 33 # लोकल b
b = 17 # लोकल b बदला
c = 100 # लोकल c
print(a, b, x, y) # 45 17 81 9
a, b, x, y = 3, 15, 3, 4
func(9, 81)
print(a, b, x, y) # 45 15 3 4 (ग्लोबल a बदला, बाकी लोकल थे)
आउटपुट
45 17 81 9
45 15 3 4
मुख्य नियम
| स्थिति | नियम |
|---|---|
फ़ंक्शन में असाइनमेंट (x = ...) | डिफ़ॉल्ट: लोकल वेरिएबल बनाता है |
| ग्लोबल वेरिएबल असाइन करना है | global x घोषित करें |
| ग्लोबल वेरिएबल केवल पढ़ना है | global की आवश्यकता नहीं |
| नेस्टेड फ़ंक्शन में एनक्लोजिंग स्कोप का वेरिएबल | nonlocal x उपयोग करें (पायथन 3) |
सर्वोत्तम अभ्यास
- ग्लोबल वेरिएबल्स का उपयोग न्यूनतम करें - वे कोड को समझना कठिन बनाते हैं।
- डेटा पास करने के लिए पैरामीटर्स और रिटर्न मानों का उपयोग करें।
- कॉन्स्टेंट्स (जो बदलते नहीं) के लिए मॉड्यूल-लेवल ग्लोबल्स स्वीकार्य हैं।