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ň:

pythondef outer():
  def inner():
    return '+++'

  return inner

Geliň outer çagyryşyny res üýtgeýjisine ýazalyň:

pythonres = outer()
print(res)

Kod ýerine ýetirilenden soň funksiýa bilen birleşen bir obýekt görkeziler:

python<function outer.<locals>.inner at 0x000001564A212B90>

Eger res üýtgeýjisi ýaýly çyzyk bilen çagyrylsa, onda '+++' habary yzyna gaýtarylar:

pythonprint(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:

pythonres = outer()()
print(res) # '+++' görkeziler
Задание 1

Aşakdaky kod berlen:

pythondef outer():
  def inner(num):
    return num + 2

  return inner
  
res = outer()(3)
print(res)

Konsolyň näme görkezjekdigini aýdyň.

Задание 2

Aşakdaky kod berlen:

pythondef outer():
  def inner(txt):
    return 'hello, ' + txt

  return inner
  
res = outer()
print(res)

Konsolyň näme görkezjekdigini aýdyň.