जब हम Python में Program लिखते हैं, तो Variables का उपयोग Data को Store करने के लिए किया जाता है। लेकिन हर Variable पूरे Program में उपलब्ध नहीं होता। कुछ Variables केवल Function के अंदर उपयोग किए जा सकते हैं, जबकि कुछ पूरे Program में उपलब्ध रहते हैं।
यही निर्धारित करता है कि कोई Variable Program के किस भाग (Area) में Access किया जा सकता है। इसे Variable Scope कहा जाता है।
यदि Variable Scope को सही ढंग से नहीं समझा जाए, तो Program में NameError जैसी समस्याएँ आ सकती हैं या एक ही नाम के Variables के कारण Confusion हो सकता है।
इस अध्याय में हम Local Variable, Global Variable, global Keyword, nonlocal Keyword, Namespace तथा LEGB Rule को विस्तार से समझेंगे।
Variable Scope उस क्षेत्र (Area) को कहते हैं जहाँ तक किसी Variable को Access किया जा सकता है।
सरल शब्दों में—
Variable Program के किस भाग में दिखाई देगा और कहाँ उसका उपयोग किया जा सकेगा, इसे Variable Scope कहते हैं।
Python में मुख्य रूप से Variable Scope के निम्न प्रकार होते हैं—
- Local Scope
- Global Scope
- Enclosing Scope
- Built-in Scope
इन चारों को मिलाकर LEGB Rule कहा जाता है।
जो Variable Function के अंदर बनाया जाता है और केवल उसी Function के अंदर उपयोग किया जा सकता है, उसे Local Variable कहते हैं।
Function के बाहर उसका अस्तित्व (Existence) नहीं होता।
def student():
name = "Rahul"
print(name)
student()
Output
Rahul
def student():
name = "Rahul"
print(name)
Output
NameError: name 'name' is not defined
name केवल Function के अंदर उपलब्ध था।
- Function के अंदर बनाया जाता है।
- केवल उसी Function में उपयोग किया जा सकता है।
- Function समाप्त होने पर उसका Scope समाप्त हो जाता है।
- Function के बाहर Access नहीं किया जा सकता।
जो Variable किसी भी Function के बाहर बनाया जाता है, उसे Global Variable कहते हैं।
इसे Program के किसी भी Function से पढ़ा (Read) जा सकता है।
college = "ABC College"
def student():
print(college)
student()
print(college)
Output
ABC College
ABC College
- Function के बाहर बनाया जाता है।
- पूरे Program में उपलब्ध रहता है।
- सभी Functions इसे Read कर सकते हैं।
- आवश्यकता पड़ने पर global Keyword से Modify भी किया जा सकता है।
Local और Global Variable का उदाहरण
name = "Python"
def demo():
name = "Java"
print(name)
demo()
print(name)
Output
Java
Python
Function के अंदर बना name Local Variable है, जबकि बाहर वाला name Global Variable है।
यदि किसी Function के अंदर Global Variable की Value बदलनी हो, तो global Keyword का उपयोग किया जाता है।
यदि global का उपयोग नहीं किया गया, तो Python उसी नाम का नया Local Variable बना देगा।
count = 10
def update():
global count
count = 20
update()
print(count)
Output
20
count = 10
def update():
count = 20
update()
print(count)
Output
10
- Global Variable की Value बदलनी हो।
- Program में Shared Data Maintain करना हो।
- Counter या Configuration Variables Update करने हों।
Best Practice: जहाँ तक संभव हो, Global Variables का कम उपयोग करें। बड़े Programs में अधिक Global Variables Code को समझना और Maintain करना कठिन बना सकते हैं।
जब एक Function के अंदर दूसरा Function (Nested Function) बनाया जाता है, तब बाहरी Function के Variable को बदलने के लिए nonlocal Keyword का उपयोग किया जाता है।
def outer():
message = "Hello"
def inner():
nonlocal message
message = "Welcome"
inner()
print(message)
outer()
Output
Welcome
- Nested Functions में।
- Outer Function के Local Variable को Modify करने के लिए।
Namespace वह स्थान है जहाँ Variables, Functions और Objects के नाम Store किए जाते हैं।
Python में मुख्यतः तीन प्रकार के Namespace होते हैं—
- Built-in Namespace
- Global Namespace
- Local Namespace
Python Variable खोजने (Name Resolution) के लिए एक निश्चित क्रम का पालन करता है, जिसे LEGB Rule कहते हैं।
L → Local
↓
E → Enclosing
↓
G → Global
↓
B → Built-in
यदि Variable Local Scope में नहीं मिलता, तो Python Enclosing Scope देखता है। वहाँ भी न मिले तो Global Scope और अंत में Built-in Scope में खोजता है।
x = "Global"
def outer():
x = "Outer"
def inner():
x = "Inner"
print(x)
inner()
outer()
Output
Inner
यहाँ Python सबसे पहले Local Scope (inner) में x खोजता है।
Local, Global और Enclosing Scope का उदाहरण
x = "Global"
def outer():
x = "Outer"
def inner():
print(x)
inner()
outer()
Output
Outer
यहाँ inner() में Local Variable नहीं है, इसलिए Python Enclosing Scope का x उपयोग करता है।
def square():
number = 5
print(number * number)
square()
message = "Python"
def display():
print(message)
display()
total = 0
def update():
global total
total = 100
update()
print(total)
def outer():
value = 10
def inner():
nonlocal value
value = 20
inner()
print(value)
outer()
name = "Global"
def outer():
name = "Outer"
def inner():
print(name)
inner()
outer()
def demo():
x = 10
print(x)
Error
NameError: name 'x' is not defined
count = 10
def demo():
count = count + 1
print(count)
demo()
यह Error इसलिए आता है क्योंकि Python count को Local Variable मान लेता है, लेकिन उसका उपयोग Value Assign होने से पहले हो रहा है।
- जहाँ संभव हो Local Variables का उपयोग करें।
- Global Variables का सीमित उपयोग करें।
- Nested Functions में nonlocal केवल आवश्यकता होने पर ही उपयोग करें।
- Meaningful Variable Names रखें।
- Variable Scope को स्पष्ट रखें ताकि Code पढ़ना और Debug करना आसान हो।
परीक्षा की दृष्टि से महत्वपूर्ण तथ्य
- Function के अंदर बना Variable Local Variable कहलाता है।
- Function के बाहर बना Variable Global Variable कहलाता है।
- Global Variable को Modify करने के लिए global Keyword का उपयोग किया जाता है।
- Outer Function के Variable को Modify करने के लिए nonlocal Keyword का उपयोग किया जाता है।
- Python Variable खोजने के लिए LEGB Rule का पालन करता है।
- LEGB का अर्थ है Local → Enclosing → Global → Built-in।
Frequently Asked Questions (FAQs)
प्रश्न 1. Local Variable क्या है?
जो Variable Function के अंदर बनाया जाता है और केवल उसी Function में उपयोग किया जा सकता है।
प्रश्न 2. Global Variable क्या है?
जो Variable Function के बाहर बनाया जाता है और पूरे Program में उपलब्ध रहता है।
प्रश्न 3. global Keyword का क्या उपयोग है?
Function के अंदर Global Variable की Value बदलने के लिए।
प्रश्न 4. nonlocal Keyword कहाँ उपयोग किया जाता है?
Nested Functions में Outer Function के Variable को Modify करने के लिए।
Python Variables को खोजने का क्रम—Local → Enclosing → Global → Built-in।
- Local Variable → केवल Function के अंदर
- Global Variable → पूरे Program में उपलब्ध
- global → Global Variable Modify करने के लिए
- nonlocal → Outer Function का Variable Modify करने के लिए
- Namespace → Variables और Functions के नामों का संग्रह
- LEGB Rule → Local → Enclosing → Global → Built-in
Python Lambda Function in Hindi – Anonymous Function, lambda Keyword, Syntax, Single Expression, map(), filter(), reduce(), Sorting, Practical Programs और Interview Questions। यह Functional Programming का महत्वपूर्ण विषय है।