Ujanja wakati wa kufanya kazi na kazi za ndani katika Python
Katika Python kunaweza kuwa na sio tu kazi zilizowekwa ndani,
lakini pia kazi moja inaweza kurudisha
nyingine. Kwa mfano, acha kazi outer
irudishe kama matokeo msimbo wa asili
wa kazi inner:
def outer():
def inner():
return '+++'
return inner
Wacha tuandike wito outer kwenye
kigeuzi res:
res = outer()
print(res)
Baada ya kutekeleza msimbo utaonyesha kitu chenye kazi:
<function outer.<locals>.inner at 0x000001564A212B90>
Ikiwa tutaita kigeuzi res kwa
mabano ya mviringo, utarudi ujumbe
'+++':
print(res()) # itatoa '+++'
Inaweza kuandikwa upya msimbo ili res
iandikwe outer kwa mabano mawili ya mviringo
- kwa ajili ya kujiita yenyewe na kazi
inner. Inafuata kwamba inaweza
kuandikwa mabano ya ziada ya mviringo
upande wa kulia wa kazi ya nje kwa idadi,
iliyowekwa ndani yake kazi:
res = outer()()
print(res) # itatoa '+++'
Msimbo ufuatao umetolewa:
def outer():
def inner(num):
return num + 2
return inner
res = outer()(3)
print(res)
Ni nini kitatolewa kwenye konsoli.
Msimbo ufuatao umetolewa:
def outer():
def inner(txt):
return 'hello, ' + txt
return inner
res = outer()
print(res)
Ni nini kitatolewa kwenye konsoli.