Variables may be assigned in three different places, corresponding to three different scopes:
|a variable is assigned inside a def||local to that function.|
|a variable is assigned in an enclosing def||nonlocal to nested functions.|
|a variable is assigned outside all defs||global to the entire file.|
Variable scopes are determined entirely by the locations of the variables in the source code.
In the following module file, the X = 99 assignment creates a global variable named X.
This X is visible everywhere in this file.
The X = 88 assignment creates a local variable X which visible only within the def statement:
X = 99 # Global (module) scope X def func(): X = 88 # Local (function) scope X: a different variable
Even though both variables are named X, their scopes make them different.
X = 88 # Global X def func(): X = 99 # Local X: hides global, but we want this here func() # from w w w .j a v a 2 s . com print(X) # Prints 88: unchanged