联系
我们
投稿
反馈
评论 返回
顶部

内容字号: 默认 大号超大号

段落设置: 段首缩进取消段首缩进

字体设置:切换到微软雅黑切换到宋体

Python中相同的值在内存中到底会保存几份

2018-03-17 08:23 出处:互联网 人气: 评论(
完美国际寻宝 彩票分析软件 猎头游戏 恋夜秀场3 一定牛彩票网 360彩票网官网 sis0001的最新地址2017 盈彩网

Python中相同的值在内存中到底会保存几份

2018-02-10 09:27 来源:Python小屋 操作系统

原标题:Python中相同的值在内存中到底会保存几份

Python采用基于值的内存管理模式,相同的值在内存中只有一份。这是很多Python教程上都会提到的一句话,但实际情况要复杂的多。什么才是值?什么样的值才会在内存中只保存一份?这是个非常复杂的问题。

0、首先明确一点,整数、实数、字符串是真正意义上的值,而上面那句话中的“值”主要指整数和短字符串。对于列表、元组、字典、集合以及range对象、map对象等容器类对象,它们不是普通的“值”,即使看起来是一样的,在内存中也不会只保存一份。

1、对于[-5, 256]之间的整数,会在内存中进行缓存,任何时刻在内存中只有一份。

对于任意对象,系统会维护一个计数器时刻记录该对象被引用的次数。每次有新的对象引用该对象,其计数器加1,每次使用del释放一个引用,其计数器减1,如果垃圾回收机制发现某对象的引用次数为0,则将其删除。对于[-5, 256]之间的整数,系统会进行缓存,系统本身也有大量对象在引用这些值。

不在[-5, 256]之间的整数,系统不会进行缓存。

2、然而,在下面的情况中,却又打破了这个规律。

那是不是可以说,如果把大整数放进列表或元组中,在内存中就只有一份了呢?错!不能这么说。准确地说,应该是同一个列表或元组中的大整数在内存中会保存一份。

3、对于实数,由于计算机存储实数会有精度问题,很难精确存储,所以不进行缓存,也就是说,即使看起来是一样的实数,在内存中也不是一份。

4、对于字符串,是否进行缓存,是一个复杂的事情,并不是单纯地看长度。

回想前面把大整数放进同一个列表或元组的情况,那么如果把长字符串放进列表或元组中,会不会也只保存一份呢?很遗憾,不会。

3、董老师CSDN学院9套“Python可以这样学”收费视频课程汇总地址:https://edu.csdn.net/search?keywords=%E8%91%A3%E4%BB%98%E5%9B%BD&type=0返回搜狐,查看更多

责任编辑:

声明:本文由入驻搜狐号的作者撰写,除搜狐官方账号外,观点仅代表作者本人,不代表搜狐立场。

阅读 ()

分享给小伙伴们:
本文标签:

更多文章

相关文章

评论

发表评论愿您的每句评论,都能给大家的生活添色彩,带来共鸣,带来思索,带来快乐。

  • 蛮便宜
  • 抠门网
  • Copyright © 2002-2014 版权所有