python2与python3区别

python2与python3区别

一、字符编码

python2默认ascii编码python

python3默认utf-8编码函数

二、除法运算

python2 整数相除的结果是一个整数,把小数部分彻底忽略掉,浮点数除法会保留小数点的部分获得一个浮点数的结果。post

在python3中 对于整数之间的相除,结果也会是浮点数编码

Python 2.x:code

>>> 1 / 2
0
>>> 1.0 / 2.0
0.5

Python 3.x:对象

>>> 1/2
0.5

三、不等于运算符

Python 2.x中不等于有两种写法 != 和 <>blog

Python 3.x中去掉了<>, 只有!=一种写法继承

四、数据类型

Py3 去除了long类型,如今只有一种整型——int,但它的行为就像Py2版本的long内存

五、捕获异常

python2 捕获异常的语法: except Exception, eutf-8

python3 except Exception as e

六、unicode字符串

python2中有两种字符串类型:Unicode字符串和非Unicode字符串。Python3中只有一种类型:Unicode字符串。

python2有两个函数能够把对象强制转换成字符串:unicode()把对象转换成unicode字符串,还有str()把对象转换为非Unicode字符串。Python3只有一种字符串类型,unicode字符串,因此str()函数便可完成全部的功能。

七、print()和raw_print()

在python2中 raw_input( )和input( ),两个函数都存在,其中区别为:

  • raw_input()   无论输入什么都返回字符串类型
  • input()    只能接收"数字"的输入,它返回所输入的数字的类型(int, float )

在python3中 raw_input( )和input( )进行了整合,去除了raw_input(),仅保留了input()函数,用法与py2中的raw_input()一致

八、range和xrange

py2中range()直接生成列表(量大占内存死机),py3中只有range( )和py2中还有的xrang( )都只生成一个生成器

九、经典类与新式类

建立类时,py2分为经典类和新式类,新式类就是继承object的类,经典类是没有继承的类,而py3中所有是新式类,默认继承object