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:

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

  return inner

Le ta shënojmë thirrjen e outer në ndryshoren res:

pythonres = outer()
print(res)

Pas ekzekutimit të kodit do të dalë një objekt me funksionin:

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

Nëse thirret ndryshorja res me kllapa të rrumbullakëta, do të kthehet mesazhi '+++':

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

pythonres = outer()()
print(res) # do të dalë '+++'
Задание 1

Jepet kodi në vijim:

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

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

Thuani, çfarë do të dalë në konsol.

Задание 2

Jepet kodi në vijim:

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

  return inner
  
res = outer()
print(res)

Thuani, çfarë do të dalë në konsol.