今日内容一些小的干货

  • 一. id is ==
  • 二. 代码块
  • 三. 小数据池
  • 四. 总结

python小数据池,代码块的最详细、深入剖析

  • 一. id is ==
  • 二. 代码块
  • 三. 小数据池
  • 四. 总结

一,id,is,==

在Python中,id是什么?id是内存地址,比如你利用id()内置函数去查询一个数据的内存地址:

name = '太白'
print(id(name))  # 1585831283968

那么 is 是什么? == 又是什么?

== 是比较的两边的数值是否相等,而 is 是比较的两边的内存地址是否相等。 如果内存地址相等,那么这两边其实是指向同一个内存地址。

可以说如果内存地址相同,那么值肯定相同,但是如果值相同,内存地址不一定相同。

二,代码块。

根据官网提示我们可以获知:

 View Code

上面的主要意思是:

Python程序是由代码块构造的。块是一个python程序的文本,他是作为一个单元执行的。

代码块:一个模块,一个函数,一个类,一个文件等都是一个代码块。

而作为交互方式输入的每个命令都是一个代码块。

什么叫交互方式?就是咱们在cmd中进入Python解释器里面,每一行代码都是一个代码块,例如:

而对于一个文件中的两个函数,也分别是两个不同的代码块:

OK,那么现在我们了解了代码块,这和小数据池有什么关系呢?且听下面分析。

代码块的缓存机制

Python在执行同一个代码块的初始化对象的命令时,会检查是否其值是否已经存在,如果存在,会将其重用。换句话说:执行同一个代码块时,遇到初始化对象的命令时,他会将初始化的这个变量与值存储在一个字典中,在遇到新的变量时,会先在字典中查询记录,如果有同样的记录那么它会重复使用这个字典中的之前的这个值。所以在你给出的例子中,文件执行时(同一个代码块)会把i1、i2两个变量指向同一个对象,满足缓存机制则他们在内存中只存在一个,即:id相同。

代码块的缓存机制的适用范围: int(float),str,bool。

int(float):任何数字在同一代码块下都会复用。

bool:True和False在字典中会以1,0方式存在,并且复用。

str:几乎所有的字符串都会符合缓存机制,具体规定如下(了解即可!):

1,非乘法得到的字符串都满足代码块的缓存机制:

s1 = '太白@!#*ewq'
s2 = '太白@!#*ewq'
print(s1 is s2)  # True

2,乘法得到的字符串分两种情况:

  2.1 乘数为1时,任何字符串满足代码块的缓存机制:

b1 = '太白@5847395QQ0743895*&^%$#((&_+(())' *1
a1 = '太白@5847395QQ0743895*&^%$#((&_+(())' *1print(a1 is b1)  # True

  2.2 乘数>=2时:仅含大小写字母,数字,下划线,总长度<=20,满足代码块的缓存机制:

s1 = 'old_' * 5
s2 = 'old_' * 5
print(s1 is s2)  # True

优点:能够提高一些字符串,整数处理人物在时间和空间上的性能;需要值相同的字符串,整数的时候,直接从‘字典’中取出复用,避免频繁的创建和销毁,提升效率,节约内存。

转载于:https://www.cnblogs.com/Py-king/p/10321547.html

Python小数据池,代码块相关推荐

  1. python小学生课本剧_小学生都能学会的python(小数据池)

    小学生都能学会的python(小数据池) 1. 小数据池. 目的:缓存我们字符串,整数,布尔值.在使用的时候不需要创建过多的对象 缓存:int, str, bool. int: 缓存范围 -5~256 ...

  2. python代码块-python小数据池,代码块的最详细、深入剖析

    一,id,is,== 在Python中,id是什么?id是内存地址,那就有人问了,什么是内存地址呢? 你只要创建一个数据(对象)那么都会在内存中开辟一个空间,将这个数据临时加在到内存中,那么这个空间是 ...

  3. python小数据池,代码块的最详细、深入剖析

    一. id is == 二. 代码块 三. 小数据池 四. 总结 一,id,is,== 在Python中,id是什么?id是内存地址,那就有人问了,什么是内存地址呢? 你只要创建一个数据(对象)那么都 ...

  4. Python小数据池

    一. id is == 二. 代码块 三. 小数据池 四. 总结 一,id,is,== 在Python中,id是什么?id是内存地址,那就有人问了,什么是内存地址呢? 你只要创建一个数据(对象)那么都 ...

  5. python 小数据池 is和 == 编码解码

    ########################总结######################### 今日主要内容 1. 小数据池, id() 小数据池针对的是: int, str, bool 在p ...

  6. 【Python21天学习挑战赛】字典 小数据池

    ​ ​ 活动地址:CSDN21天学习挑战赛 ​ 开头一叙: 无论是以后学习需要或者是三年后的工作需要,都需要用到python的工具,也接着这次活动的机会,把python系统的学一遍.跟着大佬,让pyt ...

  7. Python中的驻留机制:小数据池和代码块

    Python 中的驻留机制主要有两个:小数据池和代码块.驻留机制并不是学习 Python 过程中特别重要的概念,我们学习小数据池的目的主要有两个方面: 1.解决日后写代码过程中可能出现的疑惑.在后期开 ...

  8. python使用什么来区分代码块_Python 小数据池、代码块以及代码块缓存机制

    按照惯例,吟诗一首:苏轼<江城子·乙卯正月二十日夜记梦> 十年生死两茫茫,不思量,自难忘.千里孤坟,无处话凄凉. 纵使相逢应不识,尘满面,鬓如霜. 夜来幽梦忽还乡,小轩窗,正梳妆.相顾无言 ...

  9. 21天学通python电子版-小数据池,深浅拷贝,集合+菜中菜

    小数据池,不同代码块的缓存机制,也称为小整数缓存机制,或者称为驻留机制等等,博主认为,只要你在网上查到的这些名字其实说的都是一个意思,叫什么因人而异. 那么到底什么是小数据池?他有什么作用呢? 前提条 ...

最新文章

  1. 关于AndroidSDK配置时的tools目录下找不到adb.exe的错误
  2. 2018.06.28 与或(线段树)
  3. powerbuilder查询符合条件的数据并且过滤掉其他数据_论文浅尝 ISWC2020 | KnowlyBERT: 知识图谱结合语言模型补全图谱查询...
  4. 《云计算:概念、技术与架构》一1.1 本书目标
  5. 字节跳动AI Lab招聘算法工程师,含全职和实习
  6. 精彩预告:还在迷茫吗,DBA的未来,他们怎么看?
  7. 多元线性回归的缺陷_轻松阅 | 多元线性回归的“参差不齐
  8. onvif协议之初探
  9. protues8.9安装【硬件课设】
  10. nmap扫描端口命令详解linux网络探测之网络安全
  11. 八个常见CMD网络命令
  12. 酒桌上的那些礼仪规矩~
  13. [Android] 该文件包与具有同一名称的现有文件包存在冲突
  14. 建筑识图与构造【1】
  15. 4.1 使用常见的各种字体属性 [原创Excel教程]
  16. RAID设备的数据恢复
  17. Android编程红外编程——红外码详析
  18. 一文讲懂页面置换算法,带例题详解
  19. 什么是计算机集中管理,什么如何的是集中管理和集中管理集群创建?
  20. 2013年火车票之抢票神器--【车票无忧】

热门文章

  1. 第一章计算机网络概述答案,第一章 计算机网络概述[3]
  2. oracle外表日期,三步教会您掌握oracle外表(external table)
  3. java单击切换div_[Java教程]点击同一按钮实现div的隐藏与现实切换
  4. java抽象类异常_求教JAVA里面的错误继承抽象类我都已经看傻了。
  5. vue 固定div 滚动_vue.js-div滚动条隐藏但有滚动效果的实现方法
  6. python 温度 符号_Python通过小实例入门学习---1.0(温度转换)
  7. 微信小程序 查找兄弟节点_使用C ++程序在链接列表中查找节点
  8. ffplay分析 (音视频同步:主时钟为音频)
  9. 串口发送通信---UART发送---STM32F4实现
  10. java制作h5视频聊天_JAVA实现大华摄像头WEB方式实时显示视频,H5界面展示方式思路。...