1. 定义
名称空间即存放名字与对象映射/绑定关系的地方
2. 名称空间的分类
1. 内置名称空间
# python内置的,可以直接拿来使用的, len,print
2. 全局名称空间
# 在py文件中,顶格写的变量都是在全局名称空间中
name ='jason' # name就是全局变量,它就在全局名称空间中存着
if True:
a = 123 # a也在全局变量,它也在全局名称空间中存储
for i in range(10): # i 也是全局变量,它也在全局的名称空间中存储
pass
def func(): # func 也是全局的,它也在全局的名称空间中存储
pass
3. 局部名称空间
# 在函数中存在的都是局部的
print(locals()) # {'a': 123, 'b': 'hello'}
print(globals())
3. 名称空间的作用域
名称空间
作用域:
# 变量能够作用的范围
1. 内置的名称空间
在程序的任何阶段任何位置都可以使用(全局有效)
2. 全局的名称空间
在程序的任何阶段任何位置都可以使用(全局有效)
3. 局部的名称空间
在函数内部有效(局部有效)
"""
局部的变量能不能在任何位置使用? 局部变量一般都在函数的内部使用,外部一般不能使用
"""
"""
在全局定义的变量我们称之为是全局变量,全局变量在任何位置任何阶段都可以使用
"""
4. global和nonlocals关键字的使用
"""
在函数的内部不能直接修改外部的变量
1. 在函数的内部修改外部的不可变的数据类型需要使用global关键字声明
2. 在函数的内部修改外部的可变类型的数据不需要使用global关键字的声明
"""
"""
nonlocal的使用:
1. 在函数内部的局部修改外部的局部的不可变类型的数据使用关键字nonlocal关键字声明
2. 在函数内部的局部修改外部的局部的可变类型的数据不需要使用关键字nonlocal声明
"""