Sisäisen funktion käytön vivahteet Pythonissa

Pythonissa voi olla paitsi sisäkkäisiä funktioita, myös yksi funktio voi palauttaa toisen. Esimerkiksi, olkoon funktio outer palauttaa tuloksena inner-funktion lähdekoodin:

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

  return inner

Tallennetaan outer-funktion kutsu muuttujaan res:

pythonres = outer()
print(res)

Koodin suorituksen jälkeen tulostuu funktio-objekti:

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

Jos muuttuja res kutsutaan pyöreillä sulkeilla, palautuu viesti '+++':

pythonprint(res()) # tulostaa '+++'

Koodi voidaan kirjoittaa uudelleen siten, että res muuttujaan tallennetaan outer kahdella pyöreällä sulkeella - itse funktion kutsua ja funktion inner kutsu varten. Tästä seuraa, että ulomman funktion oikealle puolelle voidaan kirjoittaa lisäpyöreitä sulkeita sen mukaisesti, kuinka monta funktiota siihen on sisäkkäin:

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

Annettu seuraava koodi:

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

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

Mitä konsoliin tulostuu?

Задание 2

Annettu seuraava koodi:

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

  return inner
  
res = outer()
print(res)

Mitä konsoliin tulostuu?