- 论坛徽章:
- 1
|
1 Global
The global statement and its nonlocal cousin are the only things that are remotely like declaration statements in Python. They are not type or size declarations; they are namespace declarations. The global statement tells Python that a function plans to change one or more global names.
• Global names are variables assigned at the top level of the enclosing module file.
• Global names must be declared only if they are assigned within a function.
• Global names may be referenced within a function without being declared.
In other words, global allows us to change names that live outside a def at the top level of a module file.
2 Example
The global statement consists of the keyword global, followed by one or more names separated by commas.- X = 88 # Global X
- def func():
- global X
- X = 99 # Global X: outside def
- func()
- print(X) # Prints 99
复制代码- y, z = 1, 2 # Global variables in module
- def all_global():
- global x # Declare globals assigned
- x = y + z # No need to declare y, z: LEGB rule
复制代码 x, y, and z are all globals inside the function all_global. y and z are global because they aren’t assigned in the function; x is global because it was listed in a global statement to map it to the module’s scope explicitly. Without the global here, x would be considered local by virtue of the assignment.
3 Access globals- # thismod.py
- var = 99 # Global variable == module attribute
- def local():
- var = 0 # Change local var
- def glob1():
- global var # Declare global (normal)
- var += 1 # Change global var
- def glob2():
- var = 0 # Change local var
- import thismod # Import myself
- thismod.var += 1 # Change global var
- def glob3():
- var = 0 # Change local var
- import sys # Import system table
- glob = sys.modules['thismod'] # Get module object (or use __name__)
- glob.var += 1 # Change global var
- def test():
- print(var)
- local();
- print(var)
- glob1();
- print(var)
- glob2();
- print(var)
- glob3()
- print(var)
复制代码 run and get results- >>> import thismod
- >>> thismod.test()
- 99
- 99
- 100
- 101
- 102
复制代码 |
|