python基础day7_编码及小数据池

数字概念,字符串----小数据池  
数字的范围:-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'
原文地址:https://www.cnblogs.com/Cheryol/p/9606031.html