python2 与 python3 的区别
2018-09-29 16:42:08 最后更新: 2018-09-29 16:45:56 访问数量:215
2018-09-29 16:42:08 最后更新: 2018-09-29 16:45:56 访问数量:215
python3.0 版本又被称为 Py3k,是一个较大的升级
在性能提升的同事,为了不带有过多的累赘,python3 在设计时没有考虑向下兼容,致使许多基于早期 python 版本设计的程序无法在 python3 环境下运行
作为过渡版本,python 2.6、2.7 基本使用了Python 2.x的语法和库,同时考虑了向Python 3.0的迁移,允许使用部分Python 3.0的语法与函数
因此,新的 Python 程序建议使用 Python3 版本语法,即使无法立即使用Python 3.0,也建议编写相容Python 3.0版本的程式,然后使用Python 2.6, Python 2.7来执行
本文来介绍一下 python3 与 python2 的主要区别
python2 中除法的做法与 C、C++、java 都保持一致,除法返回的结果的类型依赖于两个操作数的类型,这也就意味着,两个整数相除,返回的值也是整数,因此:
随着越来越多 0 基础的开发人员学习 python,他们对这一结果感到非常困惑,因为 python 本是弱类型语言,直观上这样的返回就是出现了错误的运算
python3 中,除法进行了修改:
python2 中还有一种除法://,他负责进行 floor 运算,即取不大于运算结果的最大整数,在 python3 中他们仍然保持一致
需要注意的是 floor 操作并不是舍弃小数部分:
如果要截取整数部分,那么需要使用 math 模块的 trunc 函数
下面是 python2 中异常处理的示例:
在 python3 中,他们需要变成这样:
python2 有两种字符序列类型:str 和 Unicode,str 类型保存原始的 8 位 ascii 值,而 Unicode 实例包含 Unicode 字符
Python3 通过 bytes 类型报错 ascii 值序列,通过 str 类型保存 Unicode 字符
unicode 只是一个字符集,他没有赋予所存储的序列以具体的字符编码,因此编写Python程序的时候,一定要把编码和解码操作放在界面最外围来做,而且不要对字符编码做任何假设
python2 中,import 采用相对路径,这可能会导致一些问题,例如同一目录下有file.py,那么究竟是引用标准库 file 还是 file.py 将会成为歧义
Python3 如果还需要导入同一目录的文件必须使用绝对路径,否则只能使用相关导入的方式来进行导入
python2 中存在新式类与老式类的区别,这个区别我们后续会详细介绍
python3 彻底废除了经典类,统一采用新式类,及时你不显式声明,类依然继承自 object
Python3 使用更加严格的缩进
Python2 的缩进机制中,1 个 tab 和 8 个 space 是等价的,所以在缩进中可以同时允许tab和space在代码中共存
这种等价机制会导致部分 IDE 使用存在问题
Python3 中 1 个 tab 只能找另外一个 tab 替代,因此 tab 和 space 共存会导致报错:
https://docs.python.org/3.1/whatsnew/
https://www.cnblogs.com/kendrick/p/7478304.html
http://www.runoob.com/python/python-2x-3x.html
http://www.jyguagua.com/?p=2973
http://www.cnblogs.com/animalize/p/5633215.html