python:( == is 编码和解码 )
1. == is id()
== 比较的是左右两边的值
is 比较的是内存地址 id( ) ----获取内存地址 用法 print(id(变量))
注意:pycharm是个坑,一个py文件中所有相同的字符串,
一般都是使用一样的地址。

a = 'alex' b = 'alex' print(a == b) #True n = 10 n1 = 10 print(n == n1) #True li1 = [1,2,3] li2 = [1,2,3] print(li1 == li2) #True

#字符串 a = 'alex' b = 'alex' print(a is b) #True #数字 n = 10 n1 = 10 print(n is n1) #True

a = 'alex' print(id(a)) # 36942544 内存地址 n = 10 print(id(n)) #1408197120 li = [1,2,3] print(id(li)) #38922760 tu=(1,2,3) print(id(tu)) #38727040 dic={1:"a",2:"b",3:"c"} print(id(dic)) #5073944
2. 小数据池 is
数字小数据池范围: -5~256 (包含-5和256)
注意 : 大于256时 在pycharm中为True,在终端cmd中是False

n=-6 n1=-6 #-6 print(n is n1) # False n=-5 n1=-5 print(n is n1) # True n=256 n1=256 print(n is n1) # True n=257 n1=257 #257 print(n is n1) # True 在pycharm中(>256d)是True,在终端cmd中是False
字符串小数据池:
# 字符串中部能包含特殊字符: + - * / @ 空格等等. 否则为False
含有字符串内存地址不一样
有特殊字符在pycharm中为True,在cmd终端为False
# 字符串单个字符*20以内,内存地址是一样的
单个字符*20以上内存地址不一样的

a="alex" b="alex" print(a is b) #True a="alex@" b="alex@" print(a is b) # 有特殊字符在Pycharm中True 但是在终端中是False n=5//2 #有运算 n1=2 print(n is n1) #True a="a"*20 b="a"*20 print(a is b) #True a="a"*21 b="a"*21 print(a is b) #False
3. 编码和解码
1) ASCII: 不支持中文 支持 英文,数字,字母,符号 8位 一个字节 2) GBK 国标: 支持中文,英文,数字,符号 英文(16位 2个字节) 中文(16位 2个字节) 3) unicode 万国码: 支持中文,英文,数字,符号 英文(32位 4个字节) 中文(32位 4个字节) 4) utf-8 长度可变的万国码 最少用8位 英文(8位 1个字节) 中文(24位 3个字节) 5) utf-16 长度可变的万国码 最少用16位 python3中 程序运行阶段,使用的是unicode,因为它显示所有的内容 unicode不可以用来文件传输和存储 bytes也是一种类型 所有的传输和存储都是用bytes类型来进行. pycharm 存储的时候默认使用的是utf-8
编码: .encode("编码方式") ----拿到明文编码后对应的二进制字节
解码: .decode("编码方式") ----将编码后的字节 解码成对应的明文
注意: 用什么进行编码,就要用什么解码

# .encode() 指定要变成什么类型的编码 s="alex" print(s.encode("utf-8")) #变成utf-8 #输出:b'alex' b表示bytes s="饿了吗" print(s.encode("utf-8")) #一个中文用3个字节表示 #输出:b'\xe9\xa5\xbf\xe4\xba\x86\xe5\x90\x97' print(s.encode("gbk")) #一个中文用2个字节表示 #输出:b'\xb6\xf6\xc1\xcb\xc2\xf0' s="饿了" s1=s.encode("utf-8") print(s1) #输出:b'\xe9\xa5\xbf\xe4\xba\x86' print(s1.decode("gbk")) #输出:楗夸簡 s="饿了" s1=s.encode("gbk") print(s1) #输出:b'\xb6\xf6\xc1\xcb' print(s1.decode("gbk")) #输出:饿了