有关python内部机制的一些说明

  • id == is

id()是用来寻找内存地址的函数,ID相同的对象值一定相同
==是用来判断两端对象的值是否相同
is是用来判断内存地址是否相同
在使用时要注意值相同和地址相同的区别

  • 同一个代码块的缓存机制

代码块是指运行程序的最小单位(个人理解)
如果是响应式的(编译型)就是一行是一个代码块,如果是解释性的那种就是一个关联文件一个代码块
对于同一个代码块的的缓存机制满足驻留机制:对于相同的int(float)、bool和绝大多数str,代码块内的内存地址是相同的

a=1![](https://img2020.cnblogs.com/blog/2091092/202009/2091092-20200906163437694-1559942255.png)


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)
    
posted @ 2020-09-06 17:09  life_if_forever  阅读(155)  评论(0)    收藏  举报