1:只有数字,字符串有小数据池
小数据池:在一定范围内,即使分别给两两个变量赋相等的值,它们的id地址还会是相同的
数字范围: -5 ~ 256
字符串:1:不能有特殊字符
2:str*20 还是同一个地址,str*21就不是同一个地址
2:编码
ascll:
A: 00000001 8位 一个字节
unicode:
A: 00000001 00000001 00000001 00000001 32位 四个字节
中: 00000001 00000001 00000001 00000001 32位 四个字节
utf-8:
A: 00000001 8位 一个字节
中: 00000001 00000001 00000001 24位 三个字节
gbk:
A: 00000001 8位 一个字节
中:00000001 00000001 16位 两个字节
1:各个编码之间的二进制是不能相互识别的,会产生乱码
2:文件的储存,传输,不能是unicode,只能是其他几种
3.python3中的编码
1:python3中str在内存中是用unicode编码的
2:bytes类型:str进行存储和传输需要用到
3:表现形式与编码方式:
对于英文
str:表现形式:s = 'python'
编码方式:00000... unicode
bytes:表现形式:s = b'python'
编码方式:0000... utf-8, gbk等
1 s = 'python' 2 s1 = b'python' 3 4 print(s,type(s)) # 输出结果: python <class 'str'> 5 print(s1,type(s1)) # 输出结果: b'python' <class 'bytes'>
对于中文:
str:表现形式:s = '中国'
编码方式:00000... unicode
bytes:表现形式:s = b‘xe23e34e65e32e90e67'
编码方式:0000... utf-8, gbk等
1 s = '中国' 2 s1 = b'中国' 3 print(s,type(s)) 4 print(s1,type(s1)) #输出结果: File "C:/Users/XZB/PycharmProjects/s1/day5/第一次考试试题.py", line 133 5 # s1 = b'中国' 6 # ^ 7 # SyntaxError: bytes can only contain ASCII literal characters. 8
4.如何将str编码成bytes?
1 #英文 2 s = 'python' 3 s1 = s.encode('utf-8') 4 s2 = s.encode('gbk') 5 print(s1,s2) #输出结果:b'python' b'python' 6 7 #中文 8 s = '中国' 9 s1 = s.encode('utf-8') 10 s2 = s.encode('gbk') 11 print(s1,s2) #输出结果:b'xe4xb8xadxe5x9bxbd' b'xd6xd0xb9xfa' 12