Pythoni sisemiste funktsioonidega töötamise nüansid

Pythonis ei saa olla mitte ainult pesastatud funktsioone, vaid üks funktsioon võib ka tagastada teise. Näiteks olgu funktsioon outer tagastab tulemusena funktsiooni inner lähtekoodi:

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

  return inner

Kirjutame väljakutse outer muutujasse res:

pythonres = outer()
print(res)

Pärast koodi täitmist kuvatakse funktsiooni objekt:

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

Kui kutsuda muutuja res välja ümarsulgudega, tagastatakse sõnum '+++':

pythonprint(res()) # kuvab '+++'

Koodi saab ümber kirjutada nii, et res kirjutatakse outer kahe ümarsulguga - ennast ja funktsiooni väljakutsumiseks inner. Sellest järeldub, et saab kirjutada täiendavaid ümarsulge paremale välimisest funktsioonist vastavalt arvule, sinna pesastatud funktsioone:

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

Antud on järgmine kood:

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

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

Öelge, mis konsooli kuvatakse.

Задание 2

Antud on järgmine kood:

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

  return inner
  
res = outer()
print(res)

Öelge, mis konsooli kuvatakse.