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:

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

  return inner

Wacha tuandike wito outer kwenye kigeuzi res:

pythonres = outer()
print(res)

Baada ya kutekeleza msimbo utaonyesha kitu chenye kazi:

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

Ikiwa tutaita kigeuzi res kwa mabano ya mviringo, utarudi ujumbe '+++':

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

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

Msimbo ufuatao umetolewa:

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

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

Ni nini kitatolewa kwenye konsoli.

Задание 2

Msimbo ufuatao umetolewa:

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

  return inner
  
res = outer()
print(res)

Ni nini kitatolewa kwenye konsoli.