Python-da içki funksiýa bilen işlemeň çylşyňlyklary
Python-da diňe goýulan funksiýalar bolup bilmeýär,
ýöne bir funksiýa beýlekisini hem yzyna gaýtaryp biler.
Mysal üçin, outer funksiýasynyň inner
funksiýasynyň çyndan koduny netije hökmünde yzyna gaýtarýandygy
durmuşa getireliň:
def outer():
def inner():
return '+++'
return inner
Geliň outer çagyryşyny res üýtgeýjisine ýazalyň:
res = outer()
print(res)
Kod ýerine ýetirilenden soň funksiýa bilen birleşen bir obýekt görkeziler:
<function outer.<locals>.inner at 0x000001564A212B90>
Eger res üýtgeýjisi ýaýly çyzyk bilen çagyrylsa,
onda '+++' habary yzyna gaýtarylar:
print(res()) # '+++' görkeziler
Kody şeýle üýtgetmek mümkin, res-de outer
iki ýaýly çyzyk bilen ýazylýar - özüni we inner
funksiýasyny çagyrmak üçin. Şondan gelip çykýar, daşarky
funksiýanyň sag tarapyna, içine goýulan funksiýalaryň
sanyna laýyk gelýän goşmaça ýaýly çyzyklary ýazmak mümkin:
res = outer()()
print(res) # '+++' görkeziler
Aşakdaky kod berlen:
def outer():
def inner(num):
return num + 2
return inner
res = outer()(3)
print(res)
Konsolyň näme görkezjekdigini aýdyň.
Aşakdaky kod berlen:
def outer():
def inner(txt):
return 'hello, ' + txt
return inner
res = outer()
print(res)
Konsolyň näme görkezjekdigini aýdyň.