Scopes and name resolution
Do you remember when we talked about scopes and namespaces in the first chapter? 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 name test
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 function my_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 that test = 1
shadows the assignment test = 0
in my_function
. In the global context, test
is still 0
, as you can see from the output of the program but we define the name...