Python allows functions to access variables defined in any of its enclosing program units. These are called global variables, in contrast to local variables. The latter is only accessible within the function. For example, consider the following code:
import numpy as np # here the variable np is defined def sqrt(x): return np.sqrt(x) # we use np inside the function
This feature should not be abused. The following code is an example of what not to do:
a = 3 def multiply(x): return a * x # bad style: access to the variable a defined outside
When changing the variable a, the function multiply tacitly changes its behavior:
a=3 multiply(4) # returns 12 a=4 multiply(4) # returns 16
It is much better, in that case, to provide the variable as a parameter through the argument list:
def multiply(x, a): return a * x
Global variables can be useful when working with closures; see also the related example in Section 7.7: Anonymous...