名称空间
【一】什么是名称空间
-
存放函数名和函数值对应关系的地方
-
变量名=变量值
-
先开辟一块内存空间,把函数值扔到内存空间中----》内存空间
-
然后将变量名和变量值进行绑定存放到名称空间中---》名称空间中
【二】名称空间的分类
【1】内建名称空间
-
伴随Python解释器的代码启动而生成,随着代码结束而关闭
-
第一个被加载的名称空间,用来存放一些内置的名字,比如内建函数名
-
print(max)
# <built-in function max>
#翻译:max最大
【2】全局名称空间
-
随着内建名称空间加载完成
-
伴随python文件的开始执行/执行完毕而产生/回收
-
是第二个被加载的名称空间,文件执行过程中产生的名字都会存放于该名称空间中,如下名字
-
import sys #模块名sys
x=1 #变量名x
if x == 1:
y=2 #变量名y
def foo(x): #函数名foo
y=1
def bar():
pass
Class Bar: #类名Bar
pass
# 这个列表是全局的列表
# 列表是可变数据类型 ---> 列表被修改后id不变
num_list = []
print(id(num_list)) # 1200291395392
def add_list(num):
num_list.append(num)
print(id(num_list)) # 1200291395392
add_list(1)
add_list(2)
add_list(3)
print(num_list) # [1, 2, 3]
print(id(num_list)) # 1200291395392
【3】局部名称空间
-
在函数内部或者是类内部定义的变量
-
随着函数启动而创建,随着函数结束而消失
-
列表式是可变数据类型----》列表被修改后id不变
-
函数的形参,函数内定义的名字都会被存放于该名称空间中
【4】名称空间的加载顺序
-
内置--》全局--》局部
-
查找一个名字的顺序:
-
局部-》全局-》内置