Pythonда ички функция билан ишлашдаги нюанслар

Pythonда фақат ички функцияларгина бўлмай, балки бир функция бошқа функцияни қайтариши мумкин. Масалан, outer функции inner функциясининг исходный кодини натижа сифатида қайтарсин:

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

  return inner

Келтирилинг, outer чақириғини res ўзгарувчисига ёзамиз:

pythonres = outer()
print(res)

Код бажарилганидан сўнг функция объекти чиқади:

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

Агар res ўзгарувчисини қавс билан чақирсак, '+++' хабар қайтади:

pythonprint(res()) # чиқади '+++'

Кодни қайта ёзиш мумкин, resга outer икки қавс билан - ўзини ва inner функциясини чақириш учун. Шундан келиб чиқадики, ташқи функциянинг ўнга қаратилган қўшимча қавсларни унинг ичидаги функциялар сонига қараб ёзиш мумкин:

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

Берилган код:

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

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

Консолга нима чиқади, айтинг.

Задание 2

Берилган код:

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

  return inner
  
res = outer()
print(res)

Консолга нима чиқади, айтинг.