Python да функция ўзгарувчи сифатида

Python да функция аслан ўзгарувчидир. Ва бу уни ҳам ўтказиб юбориш мумкин деганидир.

Бизда қайтиш белгисини қайтарувчи функция бор деб фараз қилайлик:

pythondef func():
  return '!'

Келгила, print га функция номини айланмас ёзувсиз ўзгарувчи сифатида ўтказайлик:

pythonprint(func)

Код бажарилганидан сўнг консолга бу функция ҳақида маълумотни ўз ичига олган махсус объект чиқади:

python<function func at 0x0000022816383E20>

Энди func2 ўзгарувчисини эълон қилайлик, унгинг қийматига func1 функциясини ўтказамиз. Функциянинг ўзи қиймат бўйича эмас, балки объект сифатида havola бўйича ўтказилади. Ва func2 ни айланма ёзув билан чақирганимизда консолга func1 нинг иш натижаси чиқади:

pythondef func1():
print('!')

func2 = func1
func2() # '!' ни курсатади
Задание 1

Куйидаги кодни бажариш натижаси нима булади:

pythondef func():
  print('hello, user!')

greet = func
print(greet)
Задание 2

Куйидаги кодни бажариш натижаси нима булади:

pythondef getSum(num1, num2):
  res = num1 + num2
  return res

func = getSum
print(func(2, 3))