关于字符串存储时的数据类型如图(无耻的盗了老师的图):
一.首先在python2.x版本环境下
1.在python2.x版本中:解释过程种遇到字符串会有两种类型解释
(1)str类型:对应的是bytes数据,就是除了unicode的其他编码方式编码后的二进制数据 —> 其他国家语言
(2)unicode类型:对应的是unicode数据,也就是unicode编码后的二进制数据 —> 都看得懂的通用语言
2.str和unicode不要被迷惑,他们只是人为起的名字而已,而后面的代表这个类型会存成什么数据。都是二进制,只是类型不同,两者对应关系:
unicode编码成bytes
bytes解码成unicode
所有bytes都是通过unicode编码而来的
3.字符串在python内部的表示是unicode编码,因此,在做编码转换时,通常需要以unicode作为中间编码,即先将其他编码的字符串解码(decode)成unicode,再从unicode编码(encode)成另一种编码。
decode的作用是将其他编码的字符串转换成unicode编码。
encode的作用是将unicode编码转换成其他编码的字符串。
因此,转码的时候一定要先搞明白,字符串str是什么编码,然后decode成unicode,然后再encode成相应的编码。必须与代码本身编码一致!
二.在python3.x版本环境下
(1)str类型:对应的是unicode数据,也就是unicode编码后的二进制数据 —> 都看得懂的通用语言
(2)bytes类型:对应的是bytes数据,就是除了unicode的其他编码方式编码后的二进制数据 —> 其他国家语言
总结:byes最终就是用来存储或传输用的,而unicode就是用来显示用的,将bytes转成明文。
(3)在python里面明确的将字节跟字符分开了。
三.内存指令。
例如在python中定义一个变量 a=1
a=1什么意思:开辟一块内存空间,python通过a对应的内存地址(门牌号)找到对应的值。
a=2呢:开辟一块新的内存空间,而1会被某程序占用或者回收。
参考详细资料:http://www.cnblogs.com/yuanchenqi/articles/5956943.html