Нюансҳо дар кор бо функсияи дохилӣ дар Python

Дар Python на танҳо функсияҳои фарогирифташуда метавонанд бошанд, балки як функсия метавонад дигареро баргардонад. Масалан, бигзор функсияи outer ҳамчун натиҷа коди манбаии функсияи inner баргардонад:

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

  return inner

Биёед фарозиши outer-ро ба тағйирёбандаи res сабт кунем:

pythonres = outer()
print(res)

Пас аз иҷрои код объект бо функсия чоп карда мешавад:

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

Агар тағйирёбандаи res бо қавсҳои давра ( ) фарохонӣ шавад, пас паёми '+++' баргардонида мешавад:

pythonprint(res()) # '+++' -ро чоп мекунад

Мумкин аст кодро ба тавре аз нав навишт, ки ба res outer бо ду қавси давра сабт карда шавад - барои фарохонӣ кардани худаш ва функсияи inner. Аз ин бармеояд, ки метавон қавсҳои иловагии дароваро дар тарафи рости функсияи берунӣ ба миқдори функсияҳои фарогирифташуда дар он сабт кард:

pythonres = outer()()
print(res) # '+++' -ро чоп мекунад
Задание 1

Коди зерин дода шудааст:

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

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

Бигӯед, ки дар консол чӣ чоп мешавад.

Задание 2

Коди зерин дода шудааст:

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

  return inner
  
res = outer()
print(res)

Бигӯед, ки дар консол чӣ чоп мешавад.