Isoqjanov Ilyos | Python
🐍 Pythonda funksiya ichidan funksiya qaytarish mumkinmi? 🤯
Quyidagi kodga qarang:
def create(m, n):
if m == 'Max':
return lambda v: v < n
elif m == 'Min':
return lambda v: v > n
checker = create('Max', 31)
print(checker(15)) # ?
print(checker(32)) # ?
🤔 Nima chiqadi?
Bir o‘ylab ko‘ring... 👇
✅ Javob:
True
False
🧠 Nima bo‘lyapti o‘zi?
create() funksiyasi oddiy qiymat emas, boshqa funksiya (lambda) qaytaryapti.
checker = lambda v: v < 31
💡 Eng qiziq joyi
n = 31 yo‘qolib ketmaydi! 😳
U lambda ichida saqlanib qoladi
👉 Bu — closure deyiladi
🔥 Nega bu kuchli?
Siz dinamik funksiyalar yasay olasiz:
check10 = create('Max', 10)
check50 = create('Max', 50)
print(check10(20)) # False
print(check50(20)) # True
⚠️ E’tibor bering
max = create('Max', 31)
❌ bu yaxshi emas (built-in max() ni bosib yuboradi)
✅ yaxshisi:
max_checker = create('Max', 31)
🧩 Xulosa
• Funksiya ichidan funksiya qaytarish mumkin
• Ichki funksiya tashqi o‘zgaruvchini esda saqlaydi
• Bu mexanizm → closure
• Juda foydali: filter, validator, dynamic logic
4 · 779 ·