id():

  • 获取对象的内存地址:print(id(i))

== :

  • 比较两边的值是否相同

is :

  • 判断内存地址是否相同

    • id相同,值一定相同
    • 值相同,id不一定相同

代码块:

  • Python是由代码块构造的。块是一个Python程序的文本,它是作为一个单元执行的。
  • 一个模块、一个函数、一个类、一个文件等都是一个代码块。
  • 同一个文件中的两个函数,也分别是两个不同的代码块。
  • 在交互式中输入的每个命令都是一个代码块。

两个机制:

  • 同一代码块下的缓存机制:

    • Python在执行同一个代码块的初始化对象的命令时,会检查其值是否已经存在, 如果存在,会将值重用。换句话说:执行同一个代码块是,遇到初始化对象的命令时,会将初始化的变量和值存储在一个字典中,在遇到新的变量时,会先在字典中查询记录,如果有同样的记录,那么它会重复使用这个字典中的值。
  • 缓存机制的优点:
    • 节省内存空间,增加性能。
# 例:
s1 = 'abc'
s2 = 'abc'
print(id(s1))
print(id(s2))
# 在例子中,文件执行时(同一个代码块)会把s1、s2两个变量指向同一个变量
# 满足缓存机制则他们在内存中只存在一个,即:id相同

适用对象:

  • int :所有数字
  • bool :True和False在字典中会以1,0方式存在,并且复用
  • str :几乎所有的字符串都会符合缓存机制

不同代码块的缓存机制:也称小数据池

  • Python自动将-5 ~ 256的整数进行了缓存,

    当你将这些整数复制给变量时,并不会重新创建对象。
  • Python会将一定规则的字符串在字符串驻留池中,创建一份

    当你将这些字符串赋值给变量时,并不会重新创建值,而是使用在字符串驻留池中创建好的对象。

适用对象:

​ int:-5 ~ 256 之内的整数

​ bool

​ str:满足规则的字符串

is, ==, id 用法、代码块和缓存机制的更多相关文章

  1. Python中的代码块及其缓存机制、深浅copy

    一.代码块及其缓存机制 代码块 一个模块.一个函数.一个类.一个文件等都是一个代码块:交互式命令下,一行就是一个代码块. 同一个代码块内的缓存机制(字符串驻留机制) 机制内容:Python在执行同一个 ...

  2. is == id 的用法;代码块;深浅copy;集合

    1 内容总览 is == id 用法 代码块 同一代码块下的缓存机制 (字符串驻留机制) 不同代码块下的缓存机制 (小数据池) 总结 集合(了解) 深浅copy 2 具体内容 id is == # i ...

  3. python的代码块缓存机制,小数据池机制。

    同一代码块的缓存机制 在python中一个模块,一个函数,一个类,一个文件等都是一个代码块. 机制内容:Python在执行同一个代码块的初始化对象的命令时,会检查是否其值是否已经存在,如果存在,会将其 ...

  4. Python 小数据池和代码块缓存机制

    前言 本文除"总结"外,其余均为认识过程:3.7.5: 总结: 如果在同一代码块下,则采用同一代码块下的缓存机制: 如果是不同代码块,则采用小数据池的驻留机制: 需要注意的是,交互 ...

  5. Python代码块缓存、小数据池

    引子 前几天遇到了这样一道Python题目:a='123',b='123',下列哪个是正确的? A. a != b B. a is b C. a==123 D. a + b =246 正确答案是B 是 ...

  6. python代码块和小数据池

    id和is 在介绍代码块之前,先介绍两个方法:id和is,来看一段代码 # name = "Rose" # name1 = "Rose" # print(id( ...

  7. Python小数据池,代码块

    今日内容一些小的干货 一. id is == 二. 代码块 三. 小数据池 四. 总结 python小数据池,代码块的最详细.深入剖析   一. id is == 二. 代码块 三. 小数据池 四. ...

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

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

  9. python 小数据池,代码块, is == 深入剖析

    python小数据池,代码块的最详细.深入剖析   一. id is == 二. 代码块 三. 小数据池 四. 总结 一,id,is,== 在Python中,id是什么?id是内存地址,那就有人问了, ...

随机推荐

  1. 深入浅出Calcite与SQL CBO(Cost-Based Optimizer)优化

    目录 Calcite简介与CBO介绍 Calcite背景与介绍 SQL优化与CBO Calcite优化器 HepPlanner优化器与VolcanoPlanner优化器 Calcite优化样例代码介绍 ...

  2. 【python】调用sm.ms图床api接口,实现上传图片并返回url

    图床简介 sm.ms网站提供免费的图床服务.单图上传大小限制5MB,每次最多上传10张,支持多种图片链接格式和api接口调用. 获取令牌 注册账号并登录,点击User-Dashboard 点击API ...

  3. MATLAB 编译器的使用

    MATLAB 编译器的使用MATLAB 编译器(相应命令为 mcc)可生成独立应用程序.库.COM 对象.Excel 插件,218 MATLAB 实用教程它根据目标类型生成合适的包装器文件.包装器文件 ...

  4. 数据库:drop、truncate、delete的区别

    近日在删除数据时,发现除了常用的Delete & Drop语句之外,还有Truncate也是与删除数据相关的,针对上述三种有进行简单的比较与整理 用法 drop 用法:drop table 表 ...

  5. 说说我对 WSGI 的理解

    先说下 WSGI 的表面意思,Web Server Gateway Interface 的缩写,即 Web 服务器网关接口. 之前不知道 WSGI 意思的伙伴,看了上面的解释后,我估计也还是不清楚,所 ...

  6. TKE 集群组建最佳实践

    Kubernetes 版本 Kubernetes 版本迭代比较快,新版本通常包含许多 bug 修复和新功能,旧版本逐渐淘汰,建议创建集群时选择当前 TKE 支持的最新版本,后续出新版本后也是可以支持 ...

  7. 跟我一起学Redis之Redis概述

    背景 技术的更新迭代,是程序员最最最头大的事,总是在每个网络角落中有感慨声:学不动啦: 其实新技术并不是凭空而出,而是随着业务推进.数据驱动.技术积累促使开发者的不断探索和实践,最终横空出世--&qu ...

  8. Java Web学习(六)HttpServletRequest(客户端请求)

    一.定义 HttpServletRequest对象代表客户端的请求,当客户端通过HTTP协议访问服务器时,HTTP请求头中的所有信息都封装在这个对象中,通过这个对象提供的方法,可以获得客户端请求的所有 ...

  9. 使用监听器来启动spring -------使用监听器初始化上下文参数

    问题: 数据初始化监听器要注入spring容器的对象,必须先启动spring容器才能使用监听器初始化数据. 解决: 使用监听器来启动spring框架 问题:spring框架启动需要哪些参数? 1.需要 ...

  10. textarea输入框回车加大高度

    JavaScript var agt = navigator.userAgent.toLowerCase(); var is_op = (agt.indexOf("opera") ...