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. ★ MYSQL隔离级别 通俗理解 + mysql、oracle默认事务隔离级别

    ★  脏读 : 读取了前一事务 未提交 的数据 ; 不可重复读    : 读取了前一事务     提交 的数据: ★ 幻读 与 不可重复读 common :都是读取了另一条已经提交的事务(这点与脏读不 ...

  2. Creating Modules

    转自官方文档,主要说明如何创建模块 https://www.terraform.io/docs/modules/index.html A module is a container for multi ...

  3. Singer 开源便捷的ETL 工具

    singer 是一个强大,灵活的etl 工具,我们可以方便的提取web api,file,queue,基本上各种你可以想到的 数据源. singer 有一套自己的数据处理规范, taps, targe ...

  4. nginx ssi + ngx_pagespeed 实现micro frontends 开发

    nginx 的ssi 功能让我们可以将不同的拼接起来,ngx_pagespeed 是pagespeed 的nginx 模块,可以帮助 我们解决前端的一些性能优化的问题,通过简单的配置就可以搞定 一张参 ...

  5. python super()函数

    super()函数是用来调用父类(超类)的一个方法 super()的语法: python 2 的用法: super(Class, self).xxx  # class是子类的名称 class A(ob ...

  6. 关于 php json float 出现很多位的问题

    关于 php json float 出现很多位的问题 serialize_precision http://php.net/manual/en/ini.list.php https://wiki.ph ...

  7. Spring技术内幕总结 - IoC容器的实现

    IoC:Inversion of Control,控制反转,即依赖对象的获得被反转了(DI:dependency inversion,依赖注入)在Spring中,IoC容器是实现这个模式的载体.它可以 ...

  8. range— 建立一个包含指定范围单元的数组 (數字、字母)

    range()函数快速创建从1到12的数字数组 $numbers=range(0,12); echo '<pre>'; print_r($numbers); echo '</pre& ...

  9. beanshell获取响应结果数据

    http://blog.csdn.net/lluozh2015/article/details/72834014 [Jmeter]BeanShell断言--数据处理 标签: jmeter 2017-0 ...

  10. 【转】 Ubuntu在启动器添加程序快捷方式

     转自: http://blog.csdn.net/walker0411/article/details/51555821 目录(?)[-] Ubuntu在启动器添加程序 eclipse快捷方式的创建 ...