Site icon

Python Nested Functions


Let’s learn about Python nested functions in this tutorial. A nested function
is also called an inner function. Python supports defining functions inside of a function.

Python Nested Functions

A nested function is a function defined inside another function. We can use the def keyword inside another function to create a nested function.
The key features of nested functions in Python are as follows:
  • Scope
  • Closure
  • Encapsulation


The inner function can access variables from the outer function, but the reverse is not true. The outer function cannot access variables defined inside the inner function.


The inner function has access to variables and parameters of the outer function, creating a closure. This can be a powerful and flexible way to structure your code. The inner function forms a closure, capturing the variables from the outer function even after the outer function has finished execution. The inner function can still access outer function variables even after the outer function has returned.


The main advantage of using nested functions is encapsulation. Nested functions can be used for encapsulation, allowing you to hide the implementation details of certain functionality within the scope of an outer function.


The general syntax for nested functions is as follows:
def outer():
        #outer function statements
        def inner():
                  #inner function statements
          inner() # inner function call
The inner function is defined within the scope of the outer function. This means the inner function is only in scope inside the outer function.

Example Program

# Simple Program Nested Functions
# Python tutorials –

# Python outer() Function
def outer():
    print(“This is outer()”)

    # Python inner() Function
    def inner():
           print(“Control inside inner()”)

    print(“outer() invokes inner() Function”)


Program Output

This is outer()
outer() invokes inner() Function
Control inside inner()

Another Example

In this example, We will use Python nested functions

# Python nested functions
# Python tutorials –

def rectangle_outer(length, width):
    # This is the outer function

    def calculate_area():
        # inner function for calculating area
        return length * width

    def calculate_perimeter():
        # inner function for calculating perimeter
        return 2 * (length + width)

    # Call the inner functions
    area = calculate_area()
    perimeter = calculate_perimeter()

    # Return a dictionary with the calculated properties
    return {“area”: area, “perimeter”: perimeter}

# Example usage
rectangle_dict = rectangle_outer(5, 8)
print(“Area:”, rectangle_dict[“area”])
print(“Perimeter:”, rectangle_dict[“perimeter”])


In this example, rectangle_outer is the outer function that takes the length and width of a rectangle as parameters. Inside the outer function are two inner functions: calculate_area and calculate_perimeter. These inner functions have access to the length and width variables from the outer function.

The outer function then calls the inner functions to calculate the area and perimeter, and it returns a dictionary containing both values. This way, you can obtain a rectangle’s area and perimeter.

This example demonstrates how nested functions can encapsulate related functionality within a single function, providing a clean and organized way to structure your code.

Note that nested functions should be used judiciously, and excessive nesting can lead to code that is hard to understand.

Python Tutorials

Python Tutorial on this website can be found at:

More information on Python is available at the official website:

Exit mobile version