python变量作用域(四大)

#Python四大作用域
#Python 作用域(scope) 和 LEGB
# LEGB 分别是:
	# locals 			是函数内的名字空间,包括局部变量和形参
	# enclosing 		外部嵌套函数的名字空间(闭包中常见)
	# globals 			全局变量,函数定义所在模块的名字空间
	# builtins 			内置模块的名字空间
	# 而查找的优先顺序从左到右以此是: L -> E -> G -> B
	#局部变量空间———闭包空间———全局变量空间———内建模块空间

#######################
# print(type(list))			#list为   builtins
# list = 1
# print(list)
# a = 3						#globals
# def func1():
# 	a = 3					#enclosing
# 	def func2():
# 		a = 4				#locals
# 	return func2


#func2中的a闭包作用域,故未声明,无法使用 a = a + 2
# def func1():
# 	a = 10
# 	def func2():
# 		a = a - 2
# 		return a
# 	return func2()
#
# print(func1())







#访问和更改外层变量方法1
# def func1():
# 	a = 10
# 	list1 = [a,]
# 	def func2():
# 		list1[0] = list1[0] - 2
# 		return list1[0]
# 	return func2
# print(func1()())









#访问和更改外层变量方法2
# def func1():
# 	a = 10
# 	def func2():
# 		nonlocal a
# 		a -= 2
# 		return a
# 	return func2
# print(func1()())

猜你喜欢

转载自blog.csdn.net/qq_35515661/article/details/81462012