python中global的用法

python变量的作用域:

  • Local 局部作用域
  • Enclosing 闭包函数外的函数中
  • Global全局作用域

查找规则:以Local->Enclosing ->Global规则查找,即:同名变量,优先引用的是局部变量,在局部找不到,便会去局部外的局部找(例如闭包),再找不到就会去全局找。

global关键字

x = 5
def fun_a():
	print(x)

def fun_b():
	x = x + 1
	print(x)
fun_a() # 5
fun_b() #报错

因为内部函数有引用外部函数的同名变量或者全局变量,并且对这个变量有修改的时候,此时 Python 会认为它是一个局部变量,而函数中并没有 x 的定义和赋值,所以报错。

global 关键字为解决此问题而生,在下面函数 fun_c中,显示地告诉解释器 x 为全局变量,然后会在函数外面寻找 x 的定义,执行完 x = x + 1 后,x 依然是全局变量。

x = 5
def fun_c():
	global x #global 声明全局变量 x
	x = x + 1
	print(x)
fun_c() # 6

你可能感兴趣的:(python,python)