又名name space,顾名思义就是存放名字的地方,存什么名字呢?举例说明,若变量x=1,1存放于内存中,那名字x存放在哪里呢?名称空间正是存放名字x与1绑定关系的=地方
名称空间共3种,分别如下
- locals:是函数内的名称空间,包括局部变量和形参
- globals:全局变量,函数定义所在模块的名称空间
- builtins:内置模块的名称空间(Python解释器自带的内置模块)
>>> x = 1 >>> locals() #处在该区域,打印该区域所有变量 {'__name__': '__main__', '__doc__': None, '__package__': None, '__loader__': <class '_frozen_importlib.BuiltinImporter'>, '__spec__': None, '__annotations__': {}, '__builtins__': <module 'builtins' (built-in)>, 'x': 1} >>> globals() {'__name__': '__main__', '__doc__': None, '__package__': None, '__loader__': <class '_frozen_importlib.BuiltinImporter'>, '__spec__': None, '__annotations__': {}, '__builtins__': <module 'builtins' (built-in)>, 'x': 1} >>> _builtins_ Traceback (most recent call last): File "<stdin>", line 1, in <module> NameError: name '_builtins_' is not defined >>> dir(_builtins_) Traceback (most recent call last): File "<stdin>", line 1, in <module> NameError: name '_builtins_' is not defined
不同变量的作用域不同就是由这个变量所在的命名空间决定的。
作用域即范围
- 全局范围:全局存活,全局有效
- 局部范围:拘捕存活,局部有效
查看作用域方法:locals() globals()