Introduction

Python is a high-level, versatile programming language that is widely used for developing different types of applications and software. One of the key features of Python is its ability to support nested functions. Nested functions in Python refer to defining a function inside another function, which can be called and executed separately or as a part of the outer function. These functions offer a powerful way to organize code, improve its readability and maintainability, as well as facilitate code reuse. In this tutorial, we will explore the concept of nested functions in Python, explain their syntax and benefits, and provide examples of how to use them effectively in your programming projects.

Table of Contents :

  • What are Nested functions?
  • Nested Functions in Python
  • Returning Nested functions from another function

What are Nested functions?

  • A nested function is a function defined inside another function. 
  • Nested functions are not global functions. 
  • In other words, nested functions are only visible to the function in which they are defined. 
  • Nested functions can be useful for organizing code and encapsulating functionality. 
  • However, they should be used in moderation as they can make code difficult to read and understand.

Nested Functions in Python :

  • In Python, functions are first-class citizens
  • This means that they can be 
    • passed as arguments to other functions,
    • returned as values from other functions, 
    • and assigned to variables
  • One use case for this is defining nested functions. 
  • Sample code for nested functions : 

def outer_function():
	print("Inside outer function")

	def inner_function():
		print("Inside inner function")

	inner_function()

outer_function() 

# Output: 
# Inside outer function 
# Inside inner function 

# In the example above, 
# we have a function outer_function 
# outer_function defines a nested function inner_function. 
# Then outer_function calls the nested function inner_function.

Returning Nested functions from another function

  • We can also return nested functions from other functions. 
  • Sample code for returning nested functions : 

def outer_function():
	print("Inside outer function")

	def inner_function():
		print("Inside inner function")

	return inner_function


f = outer_function()
f()

# Output: 
# Inside outer function 
# Inside inner function 

# In the example above, 
# we have a function outer_function 
# outer_function defines a nested function inner_function. 
# Then outer_function returns the nested function inner_function. 
# We store the returned inner_function in variable f
# f() can then be used to call inner_function 

Prev. Tutorial : global keyword in Python 

Next Tutorial : Anonymous functions