Python Scope

In Python, variables have a specific scope, which determines where they can be accessed and modified. In this tutorial, we'll take a look at the different types of variable scope in Python and how they work.

Global Variables

Global variables are defined outside of any function or class, and they can be accessed and modified from anywhere in the program. For example:

1x = 5 2 3def print_value(): 4 print(x) 5 6print_value() # Output: 5

Here, the variable x is a global variable and it can be accessed from within the print_value function. It's important to note that global variables should be used with caution, as modifying them from within a function or class can cause unexpected behavior.

Local Variables

Local variables are defined within a function or class, and they can only be accessed from within that function or class. For example:

1def print_value(): 2 x = 5 3 print(x) 4 5some_function() # Output: 5 6print(x) # Output: NameError: name 'x' is not defined

Here, the variable x is a local variable and it can only be accessed from within the print_value function. Attempting to access it outside of the function will result in a NameError.

Nonlocal Variables

Nonlocal variables are used to modify a variable in an enclosing scope. They are defined using the nonlocal keyword and are typically used in nested functions. For example:

1def outer_function(): 2 x = 5 3 4 def inner_function(): 5 nonlocal x 6 x += 1 7 print(x) 8 9 inner_function() 10 11outer_function() # Output: 6

Here, the inner_function uses the nonlocal keyword to modify the value of the x variable defined in the enclosing scope of the outer_function.

It's important to note that the scope of a variable in Python is determined by its location in the code and by the keywords used to define it. Understanding the scope of variables is essential for writing robust and maintainable code, as it helps to avoid name collisions and unexpected behavior.