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ē.