Функции в Python – это первоклассные объекты. Это означает, что функция такая же, как и любой другой объект, и вы можете вернуть одну из другой.
Пример 1
В следующей программе мы определяем две функции: function1() и function2(), при этом первая возвращает вторую, как возвращаемое значение.
def function1():
return function2
def function2():
print('Function 2')
x = function1()
x()
Вывод:
Function 2
Примечание. Function в круглых скобках вызывает функцию, а Function без скобок возвращает ссылку на нее.
Теперь давайте разберемся, как выполняется эта программа. Ниже приведено пошаговое выполнение вышеуказанной программы:
- Определите function1().
- Определите function2().
- Вызовите function1().
- Ссылка на function 2 возвращается из function 1. Обратите внимание, что функция 2 упоминается без скобок. Мы возвращаем ссылку на нее, а не вызываем.
- Назначьте возвращаемую ссылку на функцию x.
- x() вызывает функцию, назначенную x.
- Выполните оператор print() внутри function2().
Пример 2
Теперь мы посмотрим на пример калькулятора, в котором мы определяем такие функции, как add(), subtract, multiply().
def add(a, b):
return a + b
def subtract(a, b):
return a - b
def multiply(a, b):
return a * b
def getArithmeticOperation(operation):
if operation==1:
return add
elif operation==2:
return subtract
elif operation==3:
return multiply
while True:
print('Arithmetic Operations')
print('1. Addition')
print('2. Subtraction')
print('3. Multiplication')
print('0. Exit')
operation = int(input('Enter the arithmetic operation : '))
if(operation==0):
break
func = getArithmeticOperation(operation)
a = int(input('Enter a : '))
b = int(input('Enter b : '))
result = func(a, b)
print('The result is :', result)
Вывод:
Arithmetic Operations 1. Addition 2. Subtraction 3. Multiplication 0. Exit Enter the arithmetic operation : 1 Enter a : 58 Enter b : 4 The result is : 62
getArithmeticOperation() возвращает функцию на основе значения ее аргумента.
Резюме
В этом руководстве Python мы узнали, как вернуть функцию с помощью примеров.