Pythonda ichki funktsiya bilan ishlashdagı nuanslar
Pythonda nafaqat qo'shma funktsiyalar bo'lishi mumkin,
balki bitta funktsiya boshqasini qaytarishi ham mumkin.
Masalan, outer funktsiyasi inner
funktsiyasining asl kodini natija sifatida qaytarsin:
def outer():
def inner():
return '+++'
return inner
Keling, outer chaqiruvini res
o'zgaruvchisiga yozamız:
res = outer()
print(res)
Kod bajarilgandan so'ng, funktsiyali ob'ekt chiqadi:
<function outer.<locals>.inner at 0x000001564A212B90>
Agar res o'zgaruvchisi qavs bilan chaqirilsa,
'+++' xabari qaytadi:
print(res()) # '+++' ni chiqaradi
Kodni qayta yozish mumkin, shunda res ga
outer o'zi va inner funktsiyasini
chaqirish uchun ikkita qavs bilan yoziladi.
Shundan kelib chiqadiki, tashqi funktsiyaning o'ng
tarafida uning ichidagi funktsiyalar soniga qarab
qo'shimcha qavslar yozish mumkin:
res = outer()()
print(res) # '+++' ni chiqaradi
Quyidagi kod berilgan:
def outer():
def inner(num):
return num + 2
return inner
res = outer()(3)
print(res)
Konsolga nima chiqadi, ayting.
Quyidagi kod berilgan:
def outer():
def inner(txt):
return 'hello, ' + txt
return inner
res = outer()
print(res)
Konsolga nima chiqadi, ayting.