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:

pythondef outer():
  def inner():
    return '+++'

  return inner

Keling, outer chaqiruvini res o'zgaruvchisiga yozamız:

pythonres = outer()
print(res)

Kod bajarilgandan so'ng, funktsiyali ob'ekt chiqadi:

python<function outer.<locals>.inner at 0x000001564A212B90>

Agar res o'zgaruvchisi qavs bilan chaqirilsa, '+++' xabari qaytadi:

pythonprint(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:

pythonres = outer()()
print(res) # '+++' ni chiqaradi
Задание 1

Quyidagi kod berilgan:

pythondef outer():
  def inner(num):
    return num + 2

  return inner
  
res = outer()(3)
print(res)

Konsolga nima chiqadi, ayting.

Задание 2

Quyidagi kod berilgan:

pythondef outer():
  def inner(txt):
    return 'hello, ' + txt

  return inner
  
res = outer()
print(res)

Konsolga nima chiqadi, ayting.