python2与python3字符串的区别
python2 在 py2 中,有两种类型字符串:str 和 unicode。但严格的来说,str 并不是完全意义上的字符串,把它称作 字节码串 更合适。unicode 则作为真正意义上的 字符串 ,但定义时需要使用 u"" 去声明。有人可能会有疑问,字符串 在内存单元中也是以字节进行存储的,怎么能将他俩区别对待呢? 字符串 是一种 数据结构 。数据结构 = 原数据 + 数据描述(为了更容易理解),而字符串的 “数据描述” 即为何种字符集。 字节码 则是没有数据描述的。 py2 中,当我们读取 str 类型时,它只代表了一串数据,至于这串数据是何种编码,系统是不知道的,需要我们手动指定。而 unicode 类型,则存储的相应的字符集,系统在读取时便能根据此数据描述对数据进行识别和处理。 '\xc4\xe3\xba\xc3' 对计算机来说,就是 1 个字节的字节码串在一起。 u'\u4f60\u597d' 对计算机来说,则是每 2 个字节作为一个单位,去映射 unicode 字符集做运算。 当我们定义 str字符串 时,python 会根据我们当前的运行上下文:源文件 / cli 去设定 str 的字符集。比如我们在脚本开始处注释的 coding: utf-8 会将脚本中的 str 编码为 utf-8 的字节码串儿。 # -*- coding: utf-8 -*- import