Python3 和 Python2 主要差异
来源:互联网 发布:好医生app软件 编辑:程序博客网 时间:2024/06/05 09:46
Python3打破了Python2向后兼容,极大提高了性能
Python3引入的重要差异可分为一下几个方面:
- 语法变化,删除/修改了一些语法元素,并添加了一些新的语法元素
- 标准库中的变化
- 数据类型与集合的变化
语法变化
有些语法变化会导致当前代码无法运行,这些变化是最容易发现,运行这些代码,解释器就会抛出SyntaxError异常。例如:
Python 3.6.1 (v3.6.1:69c0db5, Mar 21 2017, 18:41:36) [MSC v.1900 64 bit (AMD64)] on win32Type "help", "copyright", "credits" or "license" for more information.>>> print("hello world")hello world>>> print "hello world" File "<stdin>", line 1 print "hello world" ^SyntaxError: Missing parentheses in call to 'print'
与Python2.7相比,删除或改动的内容相对少一些,下面给出最重要的变化内容
- print不再是一条语句,所有必须加上括号
- 捕获异常的语法由 except exc, var 改为 except exc as var
Python2
raise IOError, "file error" #抛出异常except NameError, err: #捕捉异常
Python3
raise IOError("file error") #抛出异常except NameError as err: #捕捉异常
- 弃用比较运算符<>, 改用 !=
- from module import * 现在只能用于模块, 不能用在函数中
- 现在 from .[module] import name 是相对导入的唯一正确的语法。所有不以点字符开头的导入都被当作绝对导入
- sorted函数与列表的sort方法不再接受cmp参数,应该用key参数来代替
- 整数除法表达式(如 1/2)返回的是浮点数。取整运算可以用//运算符,如 1//2.这样做的好处是浮点数也可以用这个运算符,所以 5.0//2.0 == 2.0 。
>>> 1/20.5>>> 1//20>>> 5.0//2.02.0
标准库中的变化
语法变化很容易发现,标准库的重大变化也是非常容易发现的。Python的每个后续版本都会向标准库模块添加、弃用、改进或完全删除某些内容。大多数情况下,对于删除或重组的模块(例如 urlparse 移到 urllib.parse), 在运行解释器时会对导入语句抛出异常。
数据类型与集合的变化
不兼容的语法变化或标准库变化很容易发现,也很容易修复,但是集合与数据类型的变化要么难以察觉,要么需要大量的重复工作。
Python3中字符串处理的变化,这里是Python3中最具有争议的变化
现在所有的字符串都是 Unicode,字节(bytes)需要加一个b或B的前缀。
Python2中使用 ASCII 码作为默认编码方式导致string有两种类型str和unicode,Python3只支持unicode的string。python2和python3字节和字符对应关系为:
命名:字节与字节字符串的对比
由于Python3中的变化,有些人倾向将bytes实例称为字节字符串。这主要是由于历史原因,Python3中的bytes是与Python2中的str类型最为接近的序列类型(但并不完全相同)。不过bytes实例是字节序列,也不需要表示文本数据。所有为了避免混淆,虽然bytes实例与字符串具有相似性,但建议始终将其称为bytes或字节序列。Python3中字符串的概念是为了文本数据准备的,现在始终是str类型。
- Python3 和 Python2 主要差异
- python2和python3差异对比
- python2和python3主要区别
- Python2.x和3.x主要差异总结
- Python3.x和Python2.x的差异对比
- Python2 和 Python3 中默认编码的差异
- python2 与python3的print差异
- python2 和python3 共存
- python2和python3注意事项
- python2 和 python3比较
- python2和python3共存
- Python2 和Python3 区别
- python2和python3 Exception
- python2和python3
- python2和python3区别
- windows python2 和python3
- Python2和Python3区别
- python2和python3区别
- 最近邻搜索之乘积量化(Product Quantizer)
- 主机ping不通虚拟机
- es jar包冲突问题
- 类对象的生存周期
- window.location
- Python3 和 Python2 主要差异
- js拼接字符串函数名称中带参数引号问题
- JSP中三种弹出对话框的用法实例
- 06.奇特的一生评语
- SQL Server 2008 R2导出数据脚本的方法
- @suppressWarnings("unchecked") java 中是什么意思
- Express+Nodejs 下的登录拦截实现
- Linux 系统命令及shell脚本1
- 统计学习知识---感知机学习算法的拓展(非线性可分数据问题)