ITPub博客

首页 > 应用开发 > > Python2和Python3的区别

Python2和Python3的区别

作者:coyan 时间:2019-09-02 10:37:58 0 删除 编辑

Python 2在2020年元旦将正式停止官方支持,同时也有越来越多的 python 库 不再支持 python 2。

所以小编建议新手刚开始学习Python使用Python3版本

所以我们就来看看 pyhton 2 跟 python 3 有哪些区别,慢慢做个迁移~

__future__ 模块

通过 __future__ 模块,我们可以轻松使用 python 3 的特性,比如:

from __future__ import division

其它可以使用的特性主要有:

print 函数

python 2 中 print 是表达式,python 3 中 print 是函数:

除法运算

编码问题

python 2 中默认的字符串类型是 ASCII,python 3 中默认的字符串类型是 Unicode:

python 2 也支持 Unicode:

xrange

python 2 中 range() 返回一个list, xrange() 返回一个 xrange 对象(迭代器);使用 xrange() 在计算大范围时可以更加节省内存;

python 3 中不存在 xrange() ,只有 range() 也就是 python 2 中的 xrange() 。

异常

在 Python 3 中处理异常也轻微的改变了,在 Python 3 中我们现在使用 as 作为关键词。

捕获异常的语法由 except exc, var 改为 except exc as var。

使用语法except (exc1, exc2) as var可以同时捕获多种类别的异常。 Python 2.6已经支持这两种语法。

1. 在2.x时代,所有类型的对象都是可以被直接抛出的,在3.x时代,只有继承自BaseException的对象才可以被抛出。

2. 2.x raise语句使用逗号将抛出对象类型和参数分开,3.x取消了这种奇葩的写法,直接调用构造函数抛出对象即可。

在2.x时代,异常在代码中除了表示程序错误,还经常做一些普通控制结构应该做的事情,在3.x中可以看出,设计者让异常变的更加专一,只有在错误发生的情况才能去用异常捕获语句来处理。

next

python 2 中同时存在 next() 和 .next() ,而 python 3 仅保留 next() :

for循环变量和全局命名空间

python 3 中 for 循环的变量不会泄漏到全局命名空间。

input()

python 2 中,输入有两个函数 input() 和 raw_input();

python 3 中仅保留 input() ,功能同 raw_input() ,输入对象类型始终保存为 str;

数据类型

1)Py3.X去除了long类型,现在只有一种整型——int,但它的行为就像2.X版本的long

2)新增了bytes类型,对应于2.X版本的八位串,定义一个bytes字面量的方法如下:

>>> b = b'china'

>>> type(b)

str 对象和 bytes 对象可以使用 .encode() (str -> bytes) 或 .decode() (bytes -> str)方法相互转化。

>>> s = b.decode()

>>> s

'china'

>>> b1 = s.encode()

>>> b1

b'china'

3)dict的.keys()、.items 和.values()方法返回迭代器,而之前的iterkeys()等函数都被废弃。同时去掉的还有 dict.has_key(),用 in替代它吧 。

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/2236/viewspace-3150873/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2019-07-11

  • 博文量
    271
  • 访问量
    16166