Python中相同的值在内存中到底会保存几份
Python采用基于值的内存管理模式,相同的值在内存中只有一份。这是很多Python教程上都会提到的一句话,但实际情况要复杂的多。什么才是值?什么样的值才会在内存中只保存一份?这是个非常复杂的问题。
0、首先明确一点,整数、实数、字符串是真正意义上的值,而上面那句话中的“值”主要指整数和短字符串。对于列表、元组、字典、集合以及range对象、map对象等容器类对象,它们不是普通的“值”,即使看起来是一样的,在内存中也不会只保存一份。
1、对于[-5, 256]之间的整数,会在内存中进行缓存,任何时刻在内存中只有一份。
对于任意对象,系统会维护一个计数器时刻记录该对象被引用的次数。每次有新的对象引用该对象,其计数器加1,每次使用del释放一个引用,其计数器减1,如果垃圾回收机制发现某对象的引用次数为0,则将其删除。对于[-5, 256]之间的整数,系统会进行缓存,系统本身也有大量对象在引用这些值。
不在[-5, 256]之间的整数,系统不会进行缓存。
2、然而,在下面的情况中,却又打破了这个规律。
那是不是可以说,如果把大整数放进列表或元组中,在内存中就只有一份了呢?错!不能这么说。准确地说,应该是同一个列表或元组中的大整数在内存中会保存一份。
3、对于实数,由于计算机存储实数会有精度问题,很难精确存储,所以不进行缓存,也就是说,即使看起来是一样的实数,在内存中也不是一份。
4、对于字符串,是否进行缓存,是一个复杂的事情,并不是单纯地看长度。
回想前面把大整数放进同一个列表或元组的情况,那么如果把长字符串放进列表或元组中,会不会也只保存一份呢?很遗憾,不会。
----------相关阅读----------
1900页Python系列PPT分享一:基础知识(106页)
1900页Python系列PPT分享二:Python序列(列表、元组、字典、集合)(154页)
1900页Python系列PPT分享三:选择与循环结构语法及案例(96页)
1900页Python系列PPT分享四:字符串与正则表达式(109页)
1900页Python系列PPT分享五:函数设计与应用(134页)
1900页Python系列PPT分享六:面向对象程序设计(86页)
1900页Python系列PPT分享七:文件操作(132页)
报告PPT(163页):基于Python语言的课程群建设探讨与实践
Python中的依赖注入实现原理
Python中lambda表达式的常见用法
详解Python列表推导式
详解Python生成器函数和生成器对象的原理和用法
Python中else关键字的常见用法
详解Python切片技术
详解Python中的浅复制与深复制
又一个学期结束了,送给在校大学生几句话
淡定!不要因为纳入了高考和二级考试甚至极个别小学课程就盲目夸大Python!
全国计算机等级考试二级Python考试大纲预测和分析
大家都在学Python,你和别人的差距在哪?
大学生们颤抖吧,中学生已经开始学Python了!
祝所有程序员1024节日快乐
学会提问,你就成功了一大半!
盘点那些让人上火的提问方式(论如何让交流更高效)
----------喜大普奔----------
1、董付国老师Python系列教材:
《Python程序设计基础》
《Python程序设计(第2版)》
《Python可以这样学》(本书已被引入台湾发行繁体版)
《Python程序设计开发宝典》
《中学生可以这样学Python》
董付国老师6本Python系列图书阅读指南
董付国老师6本Python系列教材被北大、复旦等近百所高校选作教材
热烈庆祝《Python可以这样学》在台湾发行繁体版
2、董老师免费视频地址: https://pan.baidu.com/s/1jJeAs8Q 密码: px59
3、董老师CSDN学院9套“Python可以这样学”收费视频课程汇总地址:https://edu.csdn.net/search?keywords=%E8%91%A3%E4%BB%98%E5%9B%BD&type=0
Python中相同的值在内存中到底会保存几份相关推荐
- @清晰掉 C++ 中的 enum 结构在内存中是怎么存储的?
C++ 中的 enum 结构在内存中是怎么存储的? C++ C++ 中的 enum 结构在内存中是怎么存储的?里面存储的是常量值吗? 关于占用内存的大小,enum类型本身是不占内存的,编译器直接替换 ...
- python字典一键多值_python字典中如何一键多值的写入?
python字典中如何一键多值的写入? python字典中一键多值写入的方法: 1.循环写入字典key.value.删除指定的键值对: 原文本'jp_url.txt'每行元素以逗号分隔:host_ke ...
- python生成epub文件_python在内存中生成Zip文件!
import zipfile import StringIO class MemoryZipFile(object): def __init__(self): #创建内存文件 self._memory ...
- java 数据保存内存_java中的各种数据类型在内存中存储的方式 一
1.java是如何管理内存的 java的内存管理就是对象的分配和释放问题.(其中包括两部分) 分配:内存的分配是由程序完成的,程序员需要通过关键字new为每个对象申请内存空间(基本类型除外),所有的对 ...
- 初识java中数组、数组在内存中、越界异常、空指针异常
数组: 当存储多个数据时,此时可能会使用多个变量,这样不断声明变量会很麻烦,而这些变量都有相似的特性,因此我们可以将它们存放到一个容器中,统一处理. 容器:是将多个数据存储到一起,每个数据称为该容器的 ...
- c语言中字符型常量在内存中存放的是,【2017年整理】c语言中字符型常量与变量使用注意事项.doc...
[2017年整理]c语言中字符型常量与变量使用注意事项 字符型常量与变量 (1):字符常量:一个字符常量代表ASCII字符集中的一个字符,在程序中用单引号把一个字符括起来作为字符常量.例如'A' 'b ...
- 下列有关mysql数据库中的null值_MySQL数据库中与 NULL值有关的问题
对于SQL的新手,NULL值的概念常常会造成混淆,他们常认为NULL是与空字符串"相同的事.情况并非如此.例如,下述语句是完全不同的: mysql> INSERT INTO my_ta ...
- 从配置文件(*.config)读到内存中,手动修改配置文件后,内存中数据改变问题.
某些情况,我们把数据信息存储在*.xml或*.config文件中,存储在*.config中会比较安全,发布的程序,浏览器不会打开*.config文件,但是*.xml会在浏览器中呈现. 使用.confi ...
- python中列表的值与内存地址_python---列表、元组
一.列表 列表是我们最以后最常用的数据类型之一,通过列表可以对数据实现最方便的存储.修改等操作.列表切片names = ["fengxiaoli","Cx",& ...
最新文章
- IBM Watson 的中国生意
- 【剑指Offer】28、数组中出现次数超过一半的数字
- 4.3 欠拟合与过拟合
- 从全职高手开始的系统_动画全职高手第二季热血回归,腾讯视频的国漫IP全链路开发之道...
- 经典:编程面试的 10 大算法概念汇总
- /usr/bin/python^M: bad interpreter: No such file or directory
- Oracle并行事务回滚相关参数及视图
- 比赛中学习(1)-使用python将大量图片重命名
- Objective-C 方法重载 - Selector 标识起决定作用
- 二次型(求梯度) —— 公式的简化
- python学到什么程度可以找到工作-月薪2万+的Python Web岗,学到什么程度能找到工作?...
- Java依旧排名第一,然而变化几何?
- 数据结构--------二叉排序树
- 光储并网直流微电网控制策略及仿真模型
- 将文件上载到服务器是包含本地路径,2020年初级会计师考试照片审核通过但是上传不了是怎么回事?...
- 文档转换工具 —— 你还在为wps的word转pdf上限五页而苦恼吗?
- 记录一下把域名从阿里云服务商转入到华为云
- -verbose:gc 和 -XX:+PrintGC 的区别
- 从目标检测到小目标检测
- 2022支付宝集五福 生肖卡添福红包活动攻略
热门文章
- ssm框架mysql自增_手把手教你整合最优雅SSM框架
- 防盗链python_python一行代码,实现网页视频下载
- pandas手册_Github标星6000+ 这可能是最全的机器学习工具手册
- pythonlist排序算法_Python版常见的排序算法
- 双向链表示意图_java双向链表示意图
- 初一数学下册电子课本_七年级数学下册人教版-数学七年级下册电子课本-精品下载...
- K8S 部署rabbitmq集群
- php框架进入命令行,swoole为何要用命令行来启动_PHP开发框架教程
- 台灯的内置和外置是什么意思_两款米家台灯:1S/Lite对比简评
- 在Linux上安装Zookeeper