python中is与==的区别,编码和解码

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

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

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

1 a = "str"
2 print(id(a)) #1526192138144

  2.小数据池

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

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

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

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

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

  3.is 和 ==的区别

    is 比较的是内存地址

    ==比较的是两边的值

1 a = "a"*21
2 b = "a"*21
3 print(id(a),id(b)) #1673345490568 1673345553008
4 print(a == b) #True
5 print(a is b) #False

  4.编码和解码

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

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

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

1 a = "你好啊"
2 print(a.encode("utf-8")) #b'xe4xbdxa0xe5xa5xbdxe5x95x8a'

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

1 b = b'xe4xbdxa0xe5xa5xbdxe5x95x8a'
2 print(b.decode("utf-8")) #你好啊

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

1 a = "你好"
2 print(a.encode("utf-8")) #b'xe4xbdxa0xe5xa5xbd'
3 b = b'xe4xbdxa0xe5xa5xbd'
4 print(b.decode("gbk")) #浣犲ソ
1 a = "你好"
2 print(a.encode("utf-8")) #b'xe4xbdxa0xe5xa5xbd'
3 b = b'xe4xbdxa0xe5xa5xbd'
4 print(b.decode("gbk")) #浣犲ソ
原文地址:https://www.cnblogs.com/qq849784670/p/9408160.html