作用域
名称空间能够作用的范围
内置名称空间
程序任何阶段任何位置均可使用(全局有效)
全部名称空间
程序任何阶段任何位置均可使用(全局有效)
局部名称空间
一般情况下只在各自的局部名称空间中有效
global 与 nonlocal 关键字使用
如果想在局部修改全局数据
如果数据为不可变类型则需要关键字global声明
x = 11
def index():
# 局部修改全局变量 需要使用关键字声明
global x # >>> 声明 x 为全局名称空间的名字
x = 222
index()
print(x)
如果想在局部修改全局数据
如果数据为可变类型则无需关键字global声明
name_list = ['jason','kevin']
def index():
name_list.append('hello')
index()
print(name_list)
如果想要在内部的局部修改外部局部的不可变类型数据
需要关键字nonlocal声明
def index():
l1 = [11,22]
def func():
#内部局部修改外部局部
l1.append(333)
func()
print(l1)
index()