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中相同的值在内存中到底会保存几份相关推荐

  1. @清晰掉 C++ 中的 enum 结构在内存中是怎么存储的?

     C++ 中的 enum 结构在内存中是怎么存储的? C++ C++ 中的 enum 结构在内存中是怎么存储的?里面存储的是常量值吗? 关于占用内存的大小,enum类型本身是不占内存的,编译器直接替换 ...

  2. python字典一键多值_python字典中如何一键多值的写入?

    python字典中如何一键多值的写入? python字典中一键多值写入的方法: 1.循环写入字典key.value.删除指定的键值对: 原文本'jp_url.txt'每行元素以逗号分隔:host_ke ...

  3. python生成epub文件_python在内存中生成Zip文件!

    import zipfile import StringIO class MemoryZipFile(object): def __init__(self): #创建内存文件 self._memory ...

  4. java 数据保存内存_java中的各种数据类型在内存中存储的方式 一

    1.java是如何管理内存的 java的内存管理就是对象的分配和释放问题.(其中包括两部分) 分配:内存的分配是由程序完成的,程序员需要通过关键字new为每个对象申请内存空间(基本类型除外),所有的对 ...

  5. 初识java中数组、数组在内存中、越界异常、空指针异常

    数组: 当存储多个数据时,此时可能会使用多个变量,这样不断声明变量会很麻烦,而这些变量都有相似的特性,因此我们可以将它们存放到一个容器中,统一处理. 容器:是将多个数据存储到一起,每个数据称为该容器的 ...

  6. c语言中字符型常量在内存中存放的是,【2017年整理】c语言中字符型常量与变量使用注意事项.doc...

    [2017年整理]c语言中字符型常量与变量使用注意事项 字符型常量与变量 (1):字符常量:一个字符常量代表ASCII字符集中的一个字符,在程序中用单引号把一个字符括起来作为字符常量.例如'A' 'b ...

  7. 下列有关mysql数据库中的null值_MySQL数据库中与 NULL值有关的问题

    对于SQL的新手,NULL值的概念常常会造成混淆,他们常认为NULL是与空字符串"相同的事.情况并非如此.例如,下述语句是完全不同的: mysql> INSERT INTO my_ta ...

  8. 从配置文件(*.config)读到内存中,手动修改配置文件后,内存中数据改变问题.

    某些情况,我们把数据信息存储在*.xml或*.config文件中,存储在*.config中会比较安全,发布的程序,浏览器不会打开*.config文件,但是*.xml会在浏览器中呈现. 使用.confi ...

  9. python中列表的值与内存地址_python---列表、元组

    一.列表 列表是我们最以后最常用的数据类型之一,通过列表可以对数据实现最方便的存储.修改等操作.列表切片names = ["fengxiaoli","Cx",& ...

最新文章

  1. IBM Watson 的中国生意
  2. 【剑指Offer】28、数组中出现次数超过一半的数字
  3. 4.3 欠拟合与过拟合
  4. 从全职高手开始的系统_动画全职高手第二季热血回归,腾讯视频的国漫IP全链路开发之道...
  5. 经典:编程面试的 10 大算法概念汇总
  6. /usr/bin/python^M: bad interpreter: No such file or directory
  7. Oracle并行事务回滚相关参数及视图
  8. 比赛中学习(1)-使用python将大量图片重命名
  9. Objective-C 方法重载 - Selector 标识起决定作用
  10. 二次型(求梯度) —— 公式的简化
  11. python学到什么程度可以找到工作-月薪2万+的Python Web岗,学到什么程度能找到工作?...
  12. Java依旧排名第一,然而变化几何?
  13. 数据结构--------二叉排序树
  14. 光储并网直流微电网控制策略及仿真模型
  15. 将文件上载到服务器是包含本地路径,2020年初级会计师考试照片审核通过但是上传不了是怎么回事?...
  16. 文档转换工具 —— 你还在为wps的word转pdf上限五页而苦恼吗?
  17. 记录一下把域名从阿里云服务商转入到华为云
  18. -verbose:gc 和 -XX:+PrintGC 的区别
  19. 从目标检测到小目标检测
  20. 2022支付宝集五福 生肖卡添福红包活动攻略

热门文章

  1. ssm框架mysql自增_手把手教你整合最优雅SSM框架
  2. 防盗链python_python一行代码,实现网页视频下载
  3. pandas手册_Github标星6000+ 这可能是最全的机器学习工具手册
  4. pythonlist排序算法_Python版常见的排序算法
  5. 双向链表示意图_java双向链表示意图
  6. 初一数学下册电子课本_七年级数学下册人教版-数学七年级下册电子课本-精品下载...
  7. K8S 部署rabbitmq集群
  8. php框架进入命令行,swoole为何要用命令行来启动_PHP开发框架教程
  9. 台灯的内置和外置是什么意思_两款米家台灯:1S/Lite对比简评
  10. 在Linux上安装Zookeeper