পাইথনে ভেরিয়েবল স্কোপ নির্ধারণের জন্য LEGB রুল ফলো করা হয় (Mark Lutz-এর Learning Python বই থেকে)। এটি ন্যারো থেকে ব্রডার স্কোপের ক্রমে:
LEGB = Local → Enclosing → Global → Built-in
| স্কোপ | ব্যাখ্যা | উদাহরণ |
|---|---|---|
| L - Local | ফাংশনের ভেতর ডিক্লেয়ার করা ভেরিয়েবল | def f(): x = 10 |
| E - Enclosing | নেস্টেড ফাংশনের আউটার ফাংশনের স্কোপ | def outer(): x=1; def inner(): print(x) |
| G - Global | মডিউল লেভেল (টপ-লেভেল) ভেরিয়েবল | x = 100 # ফাংশনের বাইরে |
| B - Built-in | পাইথন ইন্টারপ্রেটার লোড করে বিল্ট-ইন নাম (len, print, str) | len, print, open |
উদাহরণ
x = "global"
def outer():
x = "enclosing"
def inner():
x = "local"
print(x) # local
inner()
print(x) # enclosing
outer()
print(x) # global
global / nonlocal কিওয়ার্ড
global x— মডিউল-লেভেলxমডিফাই করতে দেয়।nonlocal x— enclosing স্কোপেরxমডিফাই করতে দেয় (নেস্টেড ফাংশনে)।