Do you remember when we talked about scopes and namespaces in Chapter 1, A Gentle Introduction to Python? We're going to expand on that concept now. Finally, we can talk about functions and this will make everything easier to understand. Let's start with a very simple example:
# scoping.level.1.py
def my_function():
test = 1 # this is defined in the local scope of the function
print('my_function:', test)
test = 0 # this is defined in the global scope
my_function()
print('global:', test)
I have defined the test name in two different places in the previous example. It is actually in two different scopes. One is the global scope (test = 0), and the other is the local scope of the my_function function (test = 1). If you execute the code, you'll see this:
$ python scoping.level.1.py
my_function: 1
global: 0
It's clear...