一:python2与python3的区别
Python2 默认ASCII码 python3默认UTF-8
Python2中print得括号可加可不加 python3必须加括号
Python2中有xrange() python3中是range()
Python zhong raw_input() python3中input()
二:内存地址
“=”赋值
“==”比较值是否相等
“is”比较的是内存地址
“id” id(内容)表示查看内容的地址
赋值运算指向的是同一个内存地址
对数字和字符串来说有小数据池的概念
如:a = 6 b = 6 a =300 b = 300
当数字在一定的范围内时,a,b内存地址一样,当超出范围时,内存地址不一样,目的:节省空间
数字的范围是:-5~256
字符串:没有特殊字符是同一个地址,有特殊字符则内存地址不同
S * 20 是同一个地址,s * 20以后都是两个地址(s为一个字符)
List , dict , tuple , set集合 没有小数据池的概念
三:编码 ASCII Unicode UTF-8 GBK
①各个编码之间的二进制,不能相互识别,会产生乱码。
②文件的传输,存储不能是Unicode(太浪费空间)
四:python3
Python3的字符串在内存中是用Unicode编码的
新数据类型:bytes类型;和str类似,区别是编码方式,bytes编码方式是UTF-8,GBK或者GB2312,str的编码方式是Unicode
对于英文:str:表现形式为s =‘abcd’
编码方式为01010101 Unicode
bytes:表现形式为s = b‘abcd’
编码方式为utf-8 gbk
对于中文:str:表现形式为s=‘中国’
编码方式为01010101 Unicode
bytes:表现形式为s = b‘xe91e91e01......16进制
编码方式为utf-8 gbk
五:将str转化为bytes类型
encode() 编码
英文:
s1 = ‘alex’ s2 = s1.encode(‘UTF -8’) print(s2)
结果:b’alex’
中文:
转化为UTF-8的编码方式为:
s1 = ‘中国 s2 = s1.encode(‘UTF -8’) print(s2)
结果:b’xe4xb8xadxe5x9bxbd’ (三个字节为一个字符)
转化为GBK的编码方式为:
s1 = ‘中国 s2 = s1.encode(‘GBK’) print(s2)
结果:b’xd6xd0xb9xfa’ (两个个字节为一个字符)