Nuancat në punën me funksionet e brendshme në Python
Në Python mund të ketë jo vetëm funksione
të vendosura, por një funksion mund të kthejë
edhe një tjetër. Për shembull, le të themi se funksioni outer
kthen si rezultat kodin burimor të
funksionit inner:
def outer():
def inner():
return '+++'
return inner
Le ta shënojmë thirrjen e outer në
ndryshoren res:
res = outer()
print(res)
Pas ekzekutimit të kodit do të dalë një objekt me funksionin:
<function outer.<locals>.inner at 0x000001564A212B90>
Nëse thirret ndryshorja res me
kllapa të rrumbullakëta, do të kthehet mesazhi
'+++':
print(res()) # do të dalë '+++'
Mund të rishkruhet kodi në mënyrë që në res
të shënohet outer me dy kllapa
të rrumbullakëta - për të thirrur vetveten dhe funksionin
inner. Nga kjo rrjedh se mund të
shënohen kllapa shtesë të rrumbullakëta
në të djathtë të funksionit të jashtëm sipas numrit të
funksioneve të vendosura në të:
res = outer()()
print(res) # do të dalë '+++'
Jepet kodi në vijim:
def outer():
def inner(num):
return num + 2
return inner
res = outer()(3)
print(res)
Thuani, çfarë do të dalë në konsol.
Jepet kodi në vijim:
def outer():
def inner(txt):
return 'hello, ' + txt
return inner
res = outer()
print(res)
Thuani, çfarë do të dalë në konsol.