is和==的区别

1. id()

  通过id()我们可以查看到⼀一个变量表示的值在内存中的地址.

a1 = 100
b1 = 100
print(id(a1),id(b1)) #140712472404096, 140712472404096 a2 = 222222222222
b2 = 222222222222
print(id(a2),id(b2)) #2714854086672, 2714854086672 a3 = True
b3 = True
print(id(a3),id(b3)) #140712471869776, 140712471869776 内存地址相同 a4 = "abcdefghijklmnopqrstuvwxyz"
b4 = "abcdefghijklmnopqrstuvwxyz"
print(id(a4),id(b4)) #2230116006848, 2230116006848 内存地址相同 a5 = "abcdefghijklmnopqrstuvwxyz"*3
b5 = "abcdefghijklmnopqrstuvwxyz"*3
print(id(a5),id(b5)) #2234044245808, 2234044245808 内存地址相同 a6 = "uwidsoididoiwqoiewyueiydihbddwowqfewhufdnjcddududfisdygfiuwqiodmcdncduiosiiennxeniionwmwoiwieuruuewuuukskxsniiwhdhi2wuyrtfrvvufioqkq"*3
b6 = "uwidsoididoiwqoiewyueiydihbddwowqfewhufdnjcddududfisdygfiuwqiodmcdncduiosiiennxeniionwmwoiwieuruuewuuukskxsniiwhdhi2wuyrtfrvvufioqkq"*3
print(id(a6),id(b6)) #1998595213104, 1998595213104 内存地址相同 a7 = ["hello""world"]
b7 = ["hello""world"]
print(id(a7),id(b7)) #1915401364040, 1915401364104 内存地址不同 a8 = ("hello","world")
b8 = ("hello","world")
print(id(a8),id(b8)) #2328127912840, 2328127912840 内存地址相同 a9 = {"hello":"你好","world":"世界"}
b9 = {"hello":"你好","world":"世界"}
print(id(a9),id(b9)) #1975585307384, 1975585307456 内存地址不同

  注意(一般情况下): 在py文件中. 如果你只是单纯的定义一个字符串. 那么一般情况下都是会被添加到小数据池中的. 我们可以这样认为: 在使⽤用字符串的时候, python会帮我们把字符串进行缓存, 在下次使用的时候直接指向这个字符串即可. 可以节省很多内存.

  ==: 判断两端的值是否相等

  is: 判断两端的内存地址是否相等

a = "who am i"
b = "who am i"
print(id(a),id(b)) #2142885576880, 2142885576880
print(a is b) #True
print(a == b) #True li1 = ["who","am","i"]
li2 = ["who","am","i"]
print(id(li1),id(li2)) #1891093340744, 1891093340808
print(li1 is li2) #False
print(li1 == li2) #True

随机推荐

  1. java 调用process

    java调用process 有两种实现方法,一是使用Runtime类,二是使用Process类. 我在最近的项目里用的是Runtime类,接下来写下总结. 有图有真相(在网上学来一句话) packag ...

  2. Go Example--打点器

    package main import ( "time" "fmt" ) func main() { // 定时器 是当你想要在未来某一刻执行一次时使用的 - ...

  3. 【mybatis源码学习】mybtias基础组件-占位符解析器

    一.占位符解析器源码 1.占位符解析器实现的目标 通过解析字符串中指定前后缀中的字符,并完成相应的功能. 在mybtias中的应用,主要是为了解析Mapper的xml中的sql语句#{}中的内容,识别 ...

  4. 【liunx】时间处理函数

    一.脚本示例 [mylinuxaccount@linux01 ~]$ date +%Y%m%d 20171224 [mylinuxaccount@linux01 ~]$ date +%F 2017-1 ...

  5. MySQL--派生表Condition Pushdown优化

    如果派生表外部过滤条件可以下推到派生表内部,可以有效减少派生表内部扫描数据量和派生表使用内存甚至避免使用派生表. 如对于下面查询: SELECT * FROM ( SELECT cluster_id, ...

  6. 使用 Prometheus 监控minio 性能指标信息&&docker-compose 方式运行

    minio server 已经支持Prometheus 了,对于系统的运行参数我们可以方便.实时的查看 运行使用docker-compose docker-compose 文件 version: &q ...

  7. 普林斯顿数学指南(第一卷) (Timothy Gowers 著)

    第I部分 引论 I.1 数学是做什么的 I.2 数学的语言和语法 I.3 一些基本的数学定义 I.4 数学研究的一般目的 第II部分 现代数学的起源 II.1 从数到数系 II.2 几何学 II.3 ...

  8. MySQL聚合函数与数据分组

    我们最常需要的是汇总数据而不是把他们实际检索出来 确定表中行数(或满足某个条件或包含某个特定值的行数) 确定表中行组的和 找出表列(或所有行或特定列)的最大值,最小值和平均值 聚集函数是运行在行组上, ...

  9. 利用 MessageRPC 和 ShareMemory 来实现 分布式并行计算

    可以利用 MessageRPC + ShareMemory 来实现 分布式并行计算 . MessageRPC :  https://www.cnblogs.com/KSongKing/p/945541 ...

  10. Quartz学习总结

    一.基本介绍: Quartz 是 OpenSymphony 开源组织在任务调度领域的一个开源项目,完全基于 Java 实现.该项目于 2009 年被 Terracotta 收购,目前是 Terraco ...