is比较的是id(内存地址)是不是一样,==比较的是值是不是一样

Python中,万物皆对象!万物皆对象!万物皆对象!(很重要,重复3遍)

每个对象包含3个属性,id,type,value

id就是对象地址,可以通过内置函数id()查看对象引用的地址。

type就是对象类型,可以通过内置函数type()查看对象的类型。

value就是对象的值。

老师给你举个例子:

a = 1
b = a
c = 1
d = 1.0

这里有3个对象abc,类型都是int。值都是1。

id(a)   # 35556792L
id(b)   # 35556792L
id(c)   # 35556792L
id(d)   # 21253459L

本例中,毫无疑问,3兄弟abc都是引用的同一个地址35556792L下的内容。

当你想判断a is b的时候,实际上比较的是id(a)==id(b)。结果为True。

当你写成a==b时候,实际上比较的是id(a)这个地址指向的值是不是和id(b)这个地址指向值一样。结果为True。

同理,如果你写的是a is d,那么结果就是False。

而此时,a==d,结果却是True,因为值是一样的。(其实还会涉及到type的比较,此处忽略)

引申内容:

所以大多数情况下当用is和==的结果是一样时,用is的效率是会高于==的效率。

encode()  编码. 获取到的是编码之后的结果. bytes

decode()  解码. 把bytes编程我们熟悉的字符串

encode/decode:编码/解码,如下左图,各个编码之间是不能直接转换的,计算机内存中默认存储的编码格式是unicode,所以当我们需要将编码在utf8和gbk之间转换的时候,都需要和unicode做操作。

我的终端编码是gbk编码的,当我创建一个string = '景'时,string就被存储成gbk格式。此时我想把gbk格式转换成utf8格式,就要先将原gbk格式的string转换成unicode格式,然后再将unicode转换成utf8格式。如下右图,老师说,把这个字整乱码了我们的目的就达到了,哈~





最新文章

  1. ex3-数字和数字计算
  2. crontab执行时间和系统时间不一致
  3. 题目:利用条件运算符的嵌套来完成此题:学习成绩>=90分的同学用A表示,60-89分之间的用B表示,60分以下的用C表示。
  4. Json.Net4.5 序列化问题
  5. python 字符串格式化 (%操作符)
  6. POJ2299Ultra-QuickSort
  7. Python第一课
  8. PIL参考手册
  9. JavaScript Date对象更进一步
  10. Go-利用Map实现类似Python的Set数据结构
  11. windows上定时执行php文件
  12. vue2.0与实战开发
  13. C++教程之autokeyword的使用
  14. 如何使用jQuery-ContextMenu实现右击菜单
  15. Linux安装JProfiler监控tomcat
  16. 闲聊js中的apply、call和arguments
  17. java0425 wen IO
  18. 18-09-06天津 关于Excel的一些操作
  19. 13.kubernetes之pv,pvc,configmap(带补充实例)
  20. 013 mysql中find_in_set()函数的使用

热门文章

  1. 初识storm
  2. StormUI详解
  3. 怎么在eclipse中访问webservice
  4. ionic的基础学习(第一篇)
  5. POJ 1067
  6. Yarn 和 Npm 命令行切换 摘录
  7. ubuntu 镜像站部署
  8. 【原创】Team Foundation Server 域环境迁移
  9. (转)WebSphere 中池资源调优 - 线程池、连接池和 ORB
  10. Netty核心概念(7)之Java线程池