python常量池_python -- 小数据池 is和 == 再谈编码

如果在py 文件中写的字符串,几乎都是缓存的,在cmd中写的几乎都不会缓存。

a = 257b= 257

print(id(a)) #1707735307344

print(id(b)) #1707735307344

print(a is b) #True

两个对象 内存地址是不一样的

lst1 = [1,2,3] #两个对象 内存地址是不一样的

lst2 = [1,2,3]print(id(lst1)) #2748225600840

print(id(lst2)) #2748225627144

在创建字符串之前,会先去小数池比对,是否已经存在了该字符串,如果存在了,就不再创建新的了,直接拿原来存在的数据,省略掉反复重复创建字符串的过程,节约内存。

3、编码的补充

1、回顾编码

ASCII:最早的编码,里边有英文大写字母,英文小写字母,数字,一些特殊字符,没有中文, 8bit,一个byte

GBK:包含ASCII,中文(主要),日文,韩文,繁体文字。16bit ,2byte

unicode:万国码,包含ASCII,gbk,big5. ...32bit,  4byte

UTF-8:可变长度的unicode

1、英文: 8bit ,1 byte

2、欧洲文字:16bit , 2byte

3、中文: 24bit , 3byte

不同的编码间不能随意转化,需要通过媒介(unicode)转化。

在python3中,默认的编码是unicode,我们的字符串就是unicode

在python2 中,默认的编码是ASCII,Cpython,c语言的默认编码是ASCII

unicode的弊端:在存储和传数数据的时候不能直接使用unicode,必须要对字符串进行编码,编码成ASCII类型。

bytes:字节形式的字符串,不是给人看的,是给机器用的。非ASCII中的内容,展示的时候都是 \x..如果是ASCII中的内容,原样输出。

1、encode(编码格式) 编码

2、decode(编码格式) 解码

UTF-8 和GBK是不能直接转化的,必须使用unicode来转化。

m = '今天晚上想看什么书!'a= m.encode('gbk')print(a)

b= m.encode('utf-8')print(b)#b'\xbd\xf1\xcc\xec\xcd\xed\xc9\xcf\xcf\xeb\xbf\xb4\xca\xb2\xc3\xb4\xca\xe9\xa3\xa1'#b'\xe4\xbb\x8a\xe5\xa4\xa9\xe6\x99\x9a\xe4\xb8\x8a\xe6\x83\xb3\xe7\x9c\x8b\xe4\xbb\x80\xe4\xb9\x88\xe4\xb9\xa6\xef\xbc\x81'

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值