亲宝软件园·资讯

展开

Python存储字符串

​ 编程学习网   ​ 人气:0

前言:

在这篇Python字符集和字符编码中我们提到了unicode,该字符集对世界上的文字进行了系统的整理,让计算机可以用统一的方式处理文本,而且目前已经支持超过13万个字符,天然地支持多国语言。

所以不管什么文字,都可以用一个unicode来表示。

但是问题来了,unicode能表示这么多的字符,那么占用的内存一定不低吧。的确,根据当时的编码,一个unicode字符最高会占用到4字节。但是对于西方人来说,明明一个字符就够用了,为啥需要那么多。

于是又出现了utf-8,它是为unicode提供的一个新的编码规则,具有可变长的功能。不同种类的字符占用的大小不同,比如英文字符使用一个字节存储,汉字使用3个字节存储,Emoji 使用4个字节存储。

但Python在表示unicode字符串时,使用的却不是utf-8编码,至于原因我们下面来分析一下。

unicode 的三种编码

从Python3开始,字符串使用的是Unicode。而根据编码的不同,Unicode的每个字符最大可以占到4字节,从内存的角度来说, 这种编码有时会比较昂贵。

为了减少内存消耗并且提高性能,Python的内部使用了三种编码方式来表示Unicode:

在Python编程中,所有字符串的行为都是一致的,而且大多数时间我们都没有注意到差异。然而在处理大文本的时候,这种差异就会变得异常显著、甚至有些让人出乎意料。

为了看到内部表示的差异,我们使用sys.getsizeof函数,查看一个对象所占的字节数。

import sys
print(sys.getsizeof("a"))  # 50
print(sys.getsizeof("憨"))  # 76
print(sys.getsizeof("

加载全部内容

相关教程
猜你喜欢
用户评论