一、深浅拷贝的区别

深浅拷贝一般是在列表嵌套列表的情况下去讨论

浅拷贝:只拷贝列表中对象的引用,嵌套列表中的数据是不会进行全部拷贝的

深拷贝:会把对象里面所有的数据都拷贝一份,不再只拷贝对象的引用,会另开内存存储

# 浅拷贝: 只拷贝列表中对象的引用,a的值发生变化后会影响到f
a = [11,22,33]
b = [1,2,3,a] # b里面调用a
f = b.copy() # copy方法是浅拷贝
a.append("新值a")
print("f的值", f) # 结果: [1, 2, 3, [11, 22, 33, '新值a']]
# 从结果可以看到,修改了a的之后,d的值也会发生变化 # 深拷贝会把对象里面所有的数据都拷贝一份,另开一个内存存储,所以修改原来的对象拷贝出来的不受影响
import copy
a = [11,22,33]
b = [1,2,3,a]
# 需要调用copy中的deepcopy函数
f = copy.deepcopy(b)
a.append("新值a")
print("f的值", f) # 结果:[1, 2, 3, [11, 22, 33]]
# 从结果可以看到,修改了a的值并没有影响到f的值

二、小整数池

python中的整数池也是为了节约内存而设计的, 避免为整数频繁申请和销毁内存空间

小整数池范围:-5到256

>>> a = -5
>>> b = -5
>>> id(a)
140732735804256
>>> id(b)
140732735804256
>>> a = -6
>>> b = -6
>>> id(a)
3147946898928
>>> id(b)
3147918100496
>>> a = 256
>>> b = 256
>>> id(a)
140732735812608
>>> id(b)
140732735812608
>>> a = 257
>>> b = 257
>>> id(a)
3147918100496
>>> id(b)
3147918100368

上述代码可以看到,-5到256之间的数字,打印的内存地址都是一样的,注意不要直接在pycharm运行,因为pycharm会做优化,导致打印的内存地址是一样的,需要在python命令行中运行

三、大整数池

开始是空的,如果第一次定义一个字符串只有数字,字母,下划线三个元素组成,python会把这个值存储到大整数池,下次调用就会去这个大整数池调用

a = 'a_bc11'
c = 'a_bc11'
d = 'a_ !bc11'
print(id(a)) # 结果:2156715830048
print(id(c)) # 结果:2156715830048
print(id(d)) # 结果:2156713793048

从结果可以看到a,c两个内存地址是一样的,因为都是调用大整数池,d里面因为存在其他特殊字符,导致a,c内存地址不一样

最新文章

  1. Nova reboot 和 lock 操作 - 每天5分钟玩转 OpenStack(32)
  2. hdu Caocao's Bridges(无向图边双连通分量,找出权值最小的桥)
  3. hdu 3501 Calculation 2 (欧拉函数)
  4. 魔方阵算法及C语言实现
  5. Android开发手记(24) Log的使用及颜色的更改
  6. JMeter数据库性能测试
  7. 学习PrintWriter类 .
  8. Payload Inject And Fake
  9. 最近一年多我总结的常用mate标签-常用mate标签
  10. .Neter玩转Linux系列之一:初识Linux
  11. Java集合源码分析(四)HashMap
  12. Arrange the Bulls [POJ2441] [状压DP]
  13. Python之列表方法
  14. playframework 编译打包过程失败
  15. SQL Server 序列(SEQUENCE)使用
  16. 微信公众号平台上传文件返回错误代码:40005 invalid file type
  17. swust oj 962
  18. 会话的保持和form表单
  19. 洛谷.4115.Qtree4/BZOJ.1095.[ZJOI2007]Hide捉迷藏(动态点分治 Heap)
  20. ORACLE INSTANCE与EM系统

热门文章

  1. TB6612FNG电机驱动模块
  2. 关于Ubuntu系统忘记密码的解决方法合集
  3. XP系统无法进入界面 不断的反复重启-解决方法
  4. 10.DRF-认证
  5. 学习Linux必须掌握的一个知识-i节点
  6. 用 npm 搭建vue项目
  7. MQ消息队列(1)—— 概念和使用场景
  8. 第七模块 :微服务监控告警Prometheus架构和实践
  9. 动态追踪技术之SystemTap
  10. eclipse导入git项目