在介绍is与==的区别前,我们先来了解一些新的知识:内存地址、小数据池。

 1.内存地址(is 比较的就是内存地址)

    获取内存地址的方法:id() 

 a = "str"
print(id(a)) #

2.小数据池

    数字小数据池的范围:-5~256

    str中如果有特殊字符他们的内存地址就不一样

    字符串中单个字符*20以内他么的地址就一样,单个*21以上内存地址就不一样

    *在pycha中一个py文件中所有相同的字符串,一般都是一个内存地址

 a = "a"*20
b = "a"*20
print(id(a),id(b)) #1994400322232 1994400322232
 a = "a"*21
b = "a"*21
print(id(a),id(b)) #2199798013576 2199798076088

3.is 和 ==的区别

    is 比较的是内存地址

    ==比较的是两边的值

 a = "a"*21
b = "a"*21
print(id(a),id(b)) #1673345490568 1673345553008
print(a == b) #True
print(a is b) #False

4.编码和解码

    encode(编码方式)    --拿到明文编码后对应的字节

    decode(编码方式)    --将编码后的字节解码成对应的明文

    *注意:用什么编码就要用什么解码(编码在前面有提到)

 a = "你好啊"
print(a.encode("utf-8")) #b'\xe4\xbd\xa0\xe5\xa5\xbd\xe5\x95\x8a'

    这里输出的结果就是用“utf-8”编码后输出的二进制数

 b = b'\xe4\xbd\xa0\xe5\xa5\xbd\xe5\x95\x8a'
print(b.decode("utf-8")) #你好啊

    如果解码方式与编码方式不同会报错,或者解析出来的东西并不是你一开始输入的

 a = "你好"
print(a.encode("utf-8")) #b'\xe4\xbd\xa0\xe5\xa5\xbd'
b = b'\xe4\xbd\xa0\xe5\xa5\xbd'
print(b.decode("gbk")) #浣犲ソ
 a = "你好"
print(a.encode("utf-8")) #b'\xe4\xbd\xa0\xe5\xa5\xbd'
b = b'\xe4\xbd\xa0\xe5\xa5\xbd'
print(b.decode("gbk")) #浣犲ソ

最新文章

  1. 极光推送和友盟推送,ios端和安卓端的后端调试设置
  2. Web 上传图片加水印
  3. 在windowService用Process.Start()启动程序没有界面-记录
  4. sql server ,sql语句,练习笔记
  5. PHP初学者必须掌握的10个知识点
  6. merge into 和 update 的效率对比
  7. 【亲测可用】MySQL 4.1迁移到MySQL 5.0版本的中文乱码问题解决
  8. 百度地图之UI控制
  9. 逆向project第004篇:令计算器程序显示汉字(下)
  10. 一个爬取Bing每日壁纸的python脚本
  11. cardview和Palette,ActionBar颜色随图改变
  12. Ubuntu 17.04 安装
  13. Hadoop — Yarn原理解析
  14. mysql 查看某个数据库中所有表的数据量
  15. 多线程中的Lock小结
  16. [UE4]正交
  17. VS 多工程代码编写
  18. 使用IDEA搭建spring
  19. vue---设置缩进为4个空格
  20. jquery条形码生成器

热门文章

  1. java四大名著及idea常用插件
  2. Docker 安装运行MySQL
  3. RabbitMQ官方教程四 Routing(GOLANG语言实现)
  4. 【转】JS中处理Number浮点数精度问题
  5. asp.net编程基础
  6. PHP 木马代码,
  7. const的用法及它在C语言和C++中的不同
  8. mysql查看和设置最大连接数
  9. TCP/IP学习笔记8--数据链路之基本概念
  10. SpringBoot部署到Linux上AppserverApplication,访问不到控制层