Python uses lexical scopes or name spaces. 
1. the enclosing module is a global scope
2. the global scope spans a single file only
3. assigned names are local unless declared global or nonlocal
4. all other names are enclosing function locals, globals, or built-ins
5. each call to a function creates a new local scope