Vidinių funkcijų naudojimo Python'e niuansai

Python'e gali būti ne tik įdėtosios funkcijos, bet ir viena funkcija gali grąžinti kitą. Pavyzdžiui, tegul funkcija outer grąžina kaip rezultatą pradinį kodą funkcijos inner:

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

  return inner

Įrašykime iškvietimą outer į kintamąjį res:

pythonres = outer()
print(res)

Vykdant kodą, bus išvestas objektas su funkcija:

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

Jei iškviesti kintamąjį res su apvaliaisiais skliaustais, bus grąžintas pranešimas '+++':

pythonprint(res()) # išves '+++'

Galima perrašyti kodą taip, kad į res būtų įrašyta outer su dviem poromis apvaliųjų skliaustų - pačiai sau ir funkcijai inner iškvietimui. Iš to seka, kad galima įrašyti papildomus apvaliuosius skliaustus dešinėje nuo išorinės funkcijos pagal įdėtųjų funkcijų skaičių:

pythonres = outer()()
print(res) # išves '+++'
Задание 1

Duotas toks kodas:

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

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

Pasakykite, kas bus išvesta į konsolę.

Задание 2

Duotas toks kodas:

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

  return inner
  
res = outer()
print(res)

Pasakykite, kas bus išvesta į konsolę.