Nijanse pri radu sa unutrašnjom funkcijom u Python-u
U Python-u mogu postojati ne samo ugniježđene
funkcije, već jedna funkcija može vraćati
drugu. Na primer, neka funkcija outer
vraća kao rezultat izvorni kod
funkcije inner:
def outer():
def inner():
return '+++'
return inner
Hajde da zapišemo poziv outer u
promenljivu res:
res = outer()
print(res)
Nakon izvršavanja koda ispisaće se objekat sa funkcijom:
<function outer.<locals>.inner at 0x000001564A212B90>
Ako pozovemo promenljivu res sa
zagradama, vratiće se poruka
'+++':
print(res()) # ispisaće '+++'
Možemo prepisati kod tako da se u res
upisuje outer sa dve zagrade
- za poziv same sebe i funkcije
inner. Iz čega sledi da možemo
upisivati dodatne zagrade
desno od spoljne funkcije po broju,
ugniježdenih u nju funkcija:
res = outer()()
print(res) # ispisaće '+++'
Dat je sledeći kod:
def outer():
def inner(num):
return num + 2
return inner
res = outer()(3)
print(res)
Recite šta će se ispisati u konzolu.
Dat je sledeći kod:
def outer():
def inner(txt):
return 'hello, ' + txt
return inner
res = outer()
print(res)
Recite šta će se ispisati u konzolu.