前言

本篇记录一个python问题,在函数中使用全局变量

python全局变量

与C++相仿,python也有全局变量,并且在函数外定义的变量就是全局变量:

a = 5  # 全局变量
def func():
	return

函数中使用全局变量

读取

在函数中可以直接读取全局变量的值:

a = 5  # 全局变量
print(id(a))

def func():
	print(a)
	print(id(a))
'''
94648897326528
5
94648897326528
'''

修改

在函数中不能直接修改全局变量的值,如下所示:

a = 5  # 全局变量

def func():
	a=a+1

func()

将报UnboundLocalError: local variable 'a' referenced before assignment,也就是说func函数认为a是一个局部变量,但没有被赋值。

正确做法是在函数中使用global关键字提示编译器a是一个已定义的全局变量:

a = 5  # 全局变量

def func():
	global a
	a=a+1  # 6

func()
print(a)
'''
6
'''

可以看到,全局变量a被函数修改了。

局部作用域

与C++类似,可以在函数的局部作用域下,定义与全局变量同名的局部变量:

a = 5  # 全局变量

def func():
	a=5
	a=a+1  # 6
	print(a)

func()
print(a)
'''
6
5
'''

局部变量被改变不会影响同名全局变量的值(因为它们的地址不同。)

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐