python2和python3的区别
1.编码:
python2默认的编码是ascii码,python3默认的编码是utf-8
2.print:
python2.7打印的时候可以不加括号,python3打印必须加括号 否则报错
3.range:
python2中是xrange,python3是range
4.input:
python2中是raw_input python3中是input
=,==和is的区别
=是赋值符号
==是比较符号比较值是否相等
is比较的是内存地址
小数据池 (为了节省内存)
数字
范围:-5--256
x=10 y=25 print(id(x),id(y)) x和y的内存地址是相同的 数字的有效范围是-5到256:如果俩个变量的取值范围都在-5到256之间 那么它们的内存地址相同
字符串
具体的范围还不确定,但是有一些规律可以参考
1.字符串中 不能含有特殊字符
s1=‘alex‘ s2=‘alex print(s1 is s2)------>True s3=‘[email protected]‘ s4=‘[email protected]‘ print(s3 is s4) ------>False
2
字符串一个字符相乘,前20个范围内是同一个内存地址: s1=‘h‘*20 s2=‘h‘*20 print(s1 is s2)--->True 字符串一个字符相乘,超出20范围的是同俩个内存地址: s1=‘h‘*21 s2=‘h‘*21 print(s1 is s2)--->False
其他数据类型
list dic tuple set 都没有小数据池这个概念
以list为例: l1=[1,] l2=[1,] print(l1 is l2)--->False
编码
ASCII
没有中文 只有英文 一个字节(bytes)==8个位(bit)
Unicode
英文: 32个位 4个字节
中文: 32个位 4个字节
utf-8
英文: 8个位 1个字节
中文: 24个位 3个字节
GBK
英文: 8个位 1个字节
中文: 16个位 2个字节
1.各个编码之间的二进制是不能相互识别的 ,会产生乱码
2.文件的存储 传输不能是Unicode(只能是utf-8 utf-16,gbk,gb2312...)