Python - Return Function from Function


Python Return Function

In Python, Functions are first-class objects. This means that function is just like any other object. And just like any other object, you can return a function from a function.

In this tutorial, we will learn how to return a function and the scenarios where this can be used.

Examples

1. A simple example to return a function

In the following program, we define two functions: function1() and function2(). function1() returns function2() as return value.

Python Program

def function1():
    return function2

def function2():
    print('Function 2')

x = function1()
x()

Output

Function 2

Note: Function name with parenthesis calls the function, while the function name without parenthesis returns the reference to the function.

Now, let us understand how execution happens for this program. Following is a step by step execution flow of the above program.

  1. Define function1().
  2. Define function2().
  3. Call function1().
  4. function2 reference is returned from function1. Observe that function2 is mentioned without parenthesis. We are returning the function reference, not calling it.
  5. Assign the returned function reference to x.
  6. x() calls the function assigned to x.
  7. Execute print() statement inside function2().

2. Return Function - Calculator Example

Now we will see a calculator example, where we define functions like add(), subtract, multiply().

Python Program

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)

Output

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() returns the function based on its argument value.

Summary

In this tutorial of Python Examples, we learned how to return a function, with the help of examples.