Функция като променлива в Python

В Python функцията по своята същност е променлива. И това означава, че тя също може да бъда предавана.

Нека имаме функция, която връща удивителен знак:

pythondef func():
  return '!'

Нека подадем на print името на функцията без кръгли скоби като променлива:

pythonprint(func)

След изпълнение на кода в конзолата ще се изведе специален обект, съдържащ информация за тази функция:

python<function func at 0x0000022816383E20>

Сега нека декларираме променлива func2, в стойността на която ще предадем функцията func1. Самата функция ще бъде предавана не по стойност, а по референция като обект. И при извикване на 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))