Iekšējo funkciju darbības nianses Python

Python var būt ne tikai ligzdotas funkcijas, bet arī viena funkcija var atgriezt citu. Piemēram, ļaujiet funkcijai outer atgriezt kā rezultātu pirmkodu funkcijas inner:

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

  return inner

Ierakstīsim izsaukumu outer mainīgajā res:

pythonres = outer()
print(res)

Pēc koda izpildes tiks izvadīts objekts ar funkciju:

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

Ja izsauc mainīgo res ar apaļām iekavām, tad tiks atgriezts ziņojums '+++':

pythonprint(res()) # izvadīs '+++'

Kodu var pārrakstīt tā, lai res tiktu ierakstīta outer ar divām apaļām iekavām - lai izsauktu sevi pašu un funkciju inner. No tā izriet, ka var ierakstīt papildu apaļās iekavas pa labi no ārējās funkcijas pēc to skaita, ligzdotās tajā funkcijās:

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

Dots šāds kods:

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

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

Sakiet, kas tiks izvadīts konsolē.

Задание 2

Dots šāds kods:

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

  return inner
  
res = outer()
print(res)

Sakiet, kas tiks izvadīts konsolē.