数字概念,字符串----小数据池
数字的范围:-5---256
字符串: 1,不能有特殊字符
2,s*20还是同一个地址,s*21之后就是另外一个地址
i1 = 6
i2 = 6
print(id(i1),id(i2))#True
i3 = 300
i4 = 300
print(id(i3),id(i4))#False
#剩下的list dict tuple set,没有小数据池的概念
l1 = [1,]
l2 = [1,]
print(l1 is l2) #False
i1 = 6
i2 = 6
print(id(i1),id(i2))#True
i3 = 300
i4 = 300
print(id(i3),id(i4))#False
#剩下的list dict tuple set,没有小数据池的概念
l1 = [1,]
l2 = [1,]
print(l1 is l2) #False
python3编码
ascii
A : 00000010 8位 一个字节
unicode A : 00000000 00000010 0000001 000000100 32位 4个字节
中:00000000 00000010 0000001 000000100 32位 4个字节
utf-8 A : 00100000 8位 一个字节
中:00000001 00000010 00000110 24位 3个字节
gbk A :00000110 8位 1个字节
中:00000010 00000110 16位 两个字节
1:各个编码之间的二进制,是不能互相识别的,会产生乱码
2:文件的储存与传输不能是unicode(只能是utf-8 utf-16 gbk ,gb2312,ascii)
py3 :
str在内存中是用unicode编码储存的
bytes类型
对于英语:
str: 表现形式:s='alex'
编码方式:01010101 unicode
bytes:表现形式:s=b'alex'
编码方式:00011101 utf-8 gbk ...
![]()

s='alex'
s1=b'alex'
print(s,type(s))#alex <class 'str'>
print(s1,type(s1))#b'alex' <class 'bytes'>
对于中文:
str: 表现形式:s = '中国'
编码方式:01010101 unicode
bytes:表现形式:s = b'xe91e91e01e21e31e32'(该编码方式是utf-8)
编码方式:00011101 utf-8 gbk...
s = '中国'
print(s,type(s)) #中国 <class 'str'>
s1 = b'中国'
print(s1,type(s1)) #此时将会报错
encode 编码
编码方式:如何将unicode-->utf-8、gbk...
表现形式:如何将str-->bytes,而且可以设置编码方式(encode)
s11 = s1.encode('utf-8')
print(s11) #结果b'alex'
s2 = '中国'
print(s2.encode('utf-8')) #b'xe4xb8xadxe5x9bxbd'
print(s2.encode('gbk')) #b'xd6xd0xb9xfa'