In Python, when a variable is referenced, the search for the variable is based on local scope (Local), nested scope (Enclosing function locals), and global scope. It is carried out in the order of domain (Global) and built-in scope (builtins module), which is the so-called LEGB rule. That is, the order in which python refers to variables: current scope local variables -> outer scope variables -> global variables in the current module -> python built-in variables.
However, when assigning a value to a variable inside a function, it does not follow the LEGB rules mentioned above to first find the variable and then assign a value to the variable. In Python, when assigning a value to a variable in a function, there is the following rule: "When assigning a value to a variable name in a function (rather than referencing it in an expression), Python always creates or changes The variable name of the local scope, unless it has been declared as a global variable in that function. ”
golbal global variables and nonlocal local variables in python
global key Words are used to use global variables in functions or other local scopes.
gcount = 0 #定义了一个全局变量,(可以省略global关键字) def global_test(): print (gcount) #不修改,只是引用全局变量,不使用global关键字 def global_counter(): global gcount gcount +=1 #修改全局变量,需要使用global关键字 return gcount
Output
1
2
3
nonlocal keyword is used in Use outer (non-global) variables in functions or other scopes.
def make_counter(): count = 0 #定义一个局部变量,该局部变量作用范围在make_counter()方法内 def counter(): nonlocal count #在方法counter()中使用外层局部变量 count count += 1 return count return counter def make_counter_test(): mc = make_counter() print(mc()) print(mc()) print(mc()) make_counter_test()
Output
3
The above is the detailed content of How to use global variables in Python where global variables are not created. For more information, please follow other related articles on the PHP Chinese website!