Variables in the current modules global scope are visible everywhere in the module — this rule also holds for the __main__ module.
From Guido’s tutorial:
At any time during execution, there are at least three nested scopes whose namespaces are directly accessible:
- the innermost scope, which is searched first, contains the local names
- the scopes of any enclosing functions, which are searched starting with the nearest
enclosing scope, contains non-local, but also non-global names- the next-to-last scope contains the current module’s global names
- the outermost scope (searched last) is the namespace containing built-in names