What is the difference between a local variable and a nonlocal variable in Python?
Rashid D
In Python, local variables and nonlocal variables are used to store data within a specific scope, but they have different scopes and behaviors. Here's a detailed explanation of the differences between local variables and nonlocal variables:
Local Variables:
- Scope: Local variables are defined within a specific block or function. They have a limited scope and can only be accessed within that block or function.
- Declaration: Local variables are typically declared within a function using an assignment statement. They are created when the function is called and cease to exist once the function completes execution.
- Behavior: Local variables are used to store data that is specific to a particular function or block of code. They are not accessible outside of their defined scope.
- Example:
1
2
3
4
5
6
7
8
def my_function():
local_var = 10
print(local_var)
my_function() # Output: 10
print(local_var) # NameError: name 'local_var' is not defined
In this example,local_var is a local variable within themy_function() function. It is accessible and can be used within the function, but it cannot be accessed outside of the function.
Nonlocal Variables:
- Scope: Nonlocal variables are used within nested functions, where they are neither local to the nested function nor global to the entire program. They bridge the gap between local and global scopes.
- Declaration: Nonlocal variables are declared in the nested function using thenonlocal keyword. They refer to variables defined in the nearest enclosing scope that is not global.
- Behavior: Nonlocal variables allow nested functions to access and modify variables in their enclosing scope. They provide a way to share data between the nested function and its immediate outer scope.
- Example:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
def outer_function():
outer_var = 10
def inner_function():
nonlocal outer_var
outer_var += 5
print(outer_var)
inner_function() # Output: 15
outer_function()
print(outer_var) # NameError: name 'outer_var' is not defined
In this example,outer_var is a nonlocal variable in theinner_function(). It is not local to theinner_function() but refers to theouter_var variable defined in theouter_function(). Thenonlocal keyword allows the nested function to access and modify the variable in the outer scope.
Summary:
In summary, local variables are defined within a specific block or function and have a limited scope within that block or function. They are created when the block is executed and cease to exist once execution is complete. Nonlocal variables, on the other hand, are used within nested functions to access and modify variables in their enclosing scope. They bridge the gap between local and global scopes and are declared using thenonlocal keyword.
Understanding the differences between local variables and nonlocal variables allows you to correctly manage data within different scopes and use them effectively based on the requirements of your program.