有关python内部机制的一些说明
-
id == is
id()是用来寻找内存地址的函数,ID相同的对象值一定相同
==是用来判断两端对象的值是否相同
is是用来判断内存地址是否相同
在使用时要注意值相同和地址相同的区别
-
同一个代码块的缓存机制
代码块是指运行程序的最小单位(个人理解)
如果是响应式的(编译型)就是一行是一个代码块,如果是解释性的那种就是一个关联文件一个代码块
对于同一个代码块的的缓存机制满足驻留机制:对于相同的int(float)、bool和绝大多数str,代码块内的内存地址是相同的
a=1
b=1
print(id(a))
print(id(b))
# 47097829323968
# 47097829323968
-
不同代码块的缓存机制(小数据池)
对于-5到265的int,bool和一些满足特定规则组合的str,他们的内存地址相同
(代码等我的电脑修好再补吧呜呜)
-
深浅copy
-
浅copy:两个ID不同,但是指向内容的ID相同且相互关联,一处变动处处变动
l1=[1,2,[1,2]] l2=l1.copy() l1[2].append(666) print(l1) print(l2) #[1, 2, [1, 2, 666]] #[1, 2, [1, 2, 666]] -
深copy:两个ID不同,指向的元素ID也不同
import copy l2=copy.deepcopy(l1)

浙公网安备 33010602011771号