python基础day7_编码及小数据池

本文深入探讨了Python中的小数据池概念,解释了数字和字符串如何在内存中高效复用。同时,全面解析了Python中的编码机制,包括ASCII、Unicode、UTF-8、GBK等编码方式的区别及应用,以及str与bytes类型的转换方法。
数字概念,字符串----小数据池  
数字的范围:-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'x\e91\e91\e01\e21\e31\e32'(该编码方式是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'\xe4\xb8\xad\xe5\x9b\xbd'
print(s2.encode('gbk')) #b'\xd6\xd0\xb9\xfa'

 

转载于:https://www.cnblogs.com/Cheryol/p/9606031.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值