小知识点总结
一、Python2与Python3 的区别
1、Python2中可以加括号输出,也可不加输出
Python3中必须加
2、python2 中有xrange(生成器)也有range
python3中只有range
3、python2中的input为raw_input
python3 中为input
二、‘=’与is的区别
1、'='为赋值
'=='比较值是否相等
'is'比较的是内存地址
'id(内容)'--->内存地址,对于赋值运算来说 指向同一个地址

li1 = [1,2,3]
li2 = li1
print(li1 is li2)---->True
print(id(li1),id(li2))
2、数字,字符串 小数据池
int的小数据池:数字的范围-5---256数字在这个范围之内,会共用一个内存地址
字符串的小数据池:不能含有特殊字符。有特殊字符不能共用一个内存地址。s*2o还是同一个地址,s*21以后都是两个地址。只能是一个字符
4,剩下的 list dict tuple set没有小数据池的概念
5,python3中的编码
ascii一个字符用一个字节,8位表示
unicode A:用32位来表示。4个字节。中:4个字节
uft-8:英文是8位1个字节,中文用24位3个字节来表示
gbk : 英文用1个字节8位来表示,中文用16位,2个字节来表示。
(1)各个编码之间的二进制是不能互相识别的,会产生乱码
(2)文件的储存,传输,不能是Unicode(只能是utf-8,utf-16,gbk,gb2312,ascii等)
py3:
str 在内存中使用Unicode编码。
bytes类型一种特殊的数据类型,和str很像,但不是以unicode编码。
对于英文:
str的表现形式---》s = 'alex'
编码方式:0101010010 Unicode
bytes: 表现形式: s =b'alex'
编码方式:utf-8

对于中文:
str的表现形式---》s = '中国'
编码方式:0101010010 Unicode
bytes: 表现形式: s =b'x\e91\e91\e01\e21\e31\e32'(16进制)
怎么转换
#encode如何将str--》bytes类型
s1 ='alex' s11 = s1.encode('utf-8')' print(s11)------>b'alex' #utf-8 s2 ='中国' s2 = s2.encode('utf-8') print(s22) # 编码方式:utf-8