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:
def outer():
def inner():
return '+++'
return inner
Ierakstīsim izsaukumu outer
mainīgajā res:
res = outer()
print(res)
Pēc koda izpildes tiks izvadīts objekts ar funkciju:
<function outer.<locals>.inner at 0x000001564A212B90>
Ja izsauc mainīgo res ar
apaļām iekavām, tad tiks atgriezts ziņojums
'+++':
print(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:
res = outer()()
print(res) # izvadīs '+++'
Dots šāds kods:
def outer():
def inner(num):
return num + 2
return inner
res = outer()(3)
print(res)
Sakiet, kas tiks izvadīts konsolē.
Dots šāds kods:
def outer():
def inner(txt):
return 'hello, ' + txt
return inner
res = outer()
print(res)
Sakiet, kas tiks izvadīts konsolē.