Environments in Python
Generally, Python establishes the following binding environments:
1. builtin : the mother of all environments: it contains the de?nitions of all sorts of basic function, like sum and list. It is the parent of all module environments.
2. Module: each separate ?le that contains Python code is called a module and establishes its own environment, whose parent is builtin
3. Procedure calls: A Function that is described at the 'top level' of a module (that is, not nested in the de?nition of another procedure) has the module's environment as its parent, and has its name described in the module's environment. Methods that are described under other procedures have the procedure-call environment of the containing procedure as their parent.
We have seen two operations that cause bindings to be created: assignments and procedure calls. Bindings are also created when you compute an import statement. If you compute import math then a ?le associated with the math module is computed and the name math is related, in the current environment, to the math module, which is an environment. No other values are included to the current environment, and if you need to show to names in that part, you have to examine them, as in math.sqrt. If you run from math import sqrt then the math ?le is computed, and the name sqrt is related, in the current environment, to whatever the name sqrt is bound in the math function. But note that if you do this, the name math is not related to anything, and you cannot take any other procedures in the math module unless you import them outside, as well