Isoqjanov Ilyos | Python
🐍 Scope nima? (oddiy tushuntirish bilan)
Siz yozgan o‘zgaruvchi kodning hamma joyida ishlaydimi? 🤔 Yo‘q. Python har bir o‘zgaruvchiga qayerda yaratilganiga qarab ruxsat beradi. Bu tushuncha — scope deyiladi.
🧭 Python o'zgaruvchini qanday qidiradi?
Python o‘zgaruvchini 4 bosqichda qidiradi:
L → E → G → B
• Local — hozirgi funksiya ichida
• Enclosing — tashqi (nested) funksiya ichida
• Global — fayl darajasida
• Built-in — Python ichidagi tayyor nomlar (len, print, ...)
Topilmasa → ❌ NameError
📌 1. Local (eng yaqin scope)
def test():
x = 10
print(x) # ✅ ishlaydi
test()
print(x) # ❌ NameError
👉 x faqat funksiya ichida yashaydi, funksiyadan tashqarida uni tog'ridan-to'g'ri ishlata olmaysiz!
📌 2. Global
x = 5
def test():
print(x) # ✅ globaldan oladi
test()
👉 Funksiya global o'zgaruvchini muammosiz o‘qiy oladi. Lekin o‘zgartirmoqchi bo‘lsangiz global kalit so'zini ishlatish majburiy:
x = 5
def test():
global x
x += 1
test()
print(x) # 6
👉 global — tashqaridagi o‘zgaruvchini o‘zgartiradi
📌 3. Enclosing (nested funksiyalar)
def outer():
x = 10
def inner():
print(x) # ✅ tashqaridan oladi
inner()
outer()
⚠️ nonlocal ishlatish
def outer():
x = 10
def inner():
nonlocal x
x += 5
inner()
print(x) # 15
outer()
👉 nonlocal — ichki funksiya ichida tashqi funksiyaning o‘zgaruvchisini o‘zgartiradi
🧩 Xulosa
✔️ Python L → E → G → B tartibida qidiradi
✔️ Har bir o‘zgaruvchining “hududi” bor
✔️ global va nonlocal — kerak bo‘lsa ishlatiladi
✔️ Toza kod uchun — argument bilan ishlash yaxshiroq
5 · 590 ·