更新时间:2022-03-07 来源:黑马程序员 浏览量:
Python 3.x不兼容Python 2.x,但这两个系列在语法层面的差别不大。Python 3.x移除了部分混淆的表达方式,但大体语法与Python 2.x相似,Python 3.x的使用者可以轻松阅读Python 2.x编写的代码。本节将列举Python 3.x和Python 2.x的部分区别,以帮助大家了解它们之间的差异。
Python 3.x默认采用UTF-8编码,对中文和英文都有良好的支持;Python 2.x默认采用ASCII编码,对中文支持不够良好,为了防止因程序包含中文而报错,一般在Python2.x文件首行将编码格式设置为UTF-8,设置方式如下:
# -*-coding:utf-8 -*-除需在程序首行添加以上代码外,Python 2.x编写的程序中需要使用decode()方法和encode()方法对接收和输出的字符格式进行转换。
Python 3.x中用print()函数取代了python 2.x中的print语句,两者功能相同,格式不同。具体示例如下:
Python 2.x
>>> print 3,4 3 4
Python 3.x
>>> print(3,4) 3 4
Python 3.x中两个整数相除(使用运算符“/”)返回一个浮点数,不再返回整数;使用运算符“//”实现整除的用法一样。具体示例如下:
Python 2.x
>>>1/2 #整数相除 0 >>>1.0/2.0 #浮点数相除 0.5
Python 3.x
>>> 1/2 0.5 >>> 1//2 0
Python 3.x中只使用“0o”开头以表示八进制,删除了Python 2.x中使用“0”开头的表示方法。
Python3.x只使用“!=”表示不等运算,删除了Python 2.x中的“<>”表示方法。Python3.x中的<、<=、>、>=运算符被用于比较两个不存在有意义顺序的元素时不再返回布尔值,而是抛出异常。具体示例如下:
Python 2.x
>>>1 <'a' Flase
Python 3.x
>>> 1 <'a' Tracapack (most recent call last): File "<stdin>", line 1, in <module> TypeError: '<' not supported between instances of 'int' and 'str'
Python 3.x中的整型不再区分整型和长整型,只保留int类型,且int类型的长度只与计算机的内存有关,内存足够大,整数就能足够长;同时sys.maxint常量也被删除。
Python3.x中增加了关键字as、with、True、False、None。
Python 3.x中使用input()函数取代了raw_input()函数。
Python 3.x中使用list()函数对 range()函数的返回值进行转换,以实现2.x中range()返回列表的功能。具体示例如下:
Python 2.x
>>> range(5) [0, 1, 2, 3, 4]
Python3.x
>>> range(5) range (0, 5) >>> list (range (5)) [0,1,2,3,4]
Python3.x中使用as关键字标识异常信息。具体示例如下:
Python 2.x
>>> try: ... raise TypeError,"类型错误" … except TypeError,err: ... print err.message ... 类型错误
此外Python3.x中取消了异常类的序列行为和.message 属性。本节只列举了Pytbon版本的部分区别,更多内容可参见Python 官网文档。