首页 > 编程笔记 > Python笔记

Python3和Python2的区别

Python 发展到现在,经历了多个版本。截至本文发布时,Python 最新版本为 3.8。

需要注意的是,Python 3.x 不再兼容现有的 2.x 程序。可根据实际需要选择使用的版本,当然,选择较新的版本有利于以后软件升级。

作为一个开源软件,Python 拥有一个参与者众多的开发社区,它保持 Python 的不断更新和改进。Python 的开发者通过一个在线的源代码控制系统协同工作,所有对 Python 的修改必须遵循 PEP(Python Enhancement Proposal,Python 改进提案),并通过 Python 扩展回归测试系统的测试。

目前,由一个非正式的组织 PSF(Python Software Foundation,Python软件基金)负责组织会议并处理 Python 的知识产权问题。

Python 3.x 与 2.x 的主要区别如下:

1) Python 3.x默认使用UTF-8编码

Python 3.x 源代码中的字符默认使用 UTF-8 编码,可以很好地支持中文或其他非英文字符。例如,在 Python 3.x 中可使用汉字作为变量名;在 Python 2.x 中不能使用汉字作为变量名,否则会出错。

2) print函数代替了print语句

在 Python 3.x 中,调用 print 函数来输出数据;在 Python 2.x 中则使用 print 语句。

3) 完全面向对象

在 Python 2.x 中的各种数据类型,在 3.x 中全面升级为类(Class)。例如,在 Python 2.x 中输出 int 数据类型 print int 的结果是 <type'int'>,在 Python 3.x 中输出 int 数据类型:print(int) 的结果是 <class'int'>。

4) 用视图和迭代器代替了列表

常用方法或函数在 Python 2.x 中返回列表,在 3.x 中有很多改变。

在 3.x 中,字典的 keys()、items() 和 values() 方法用返回视图代替了列表,不再支持 2.x 中的 iterkeys()、iteritems() 和 itervalues();在 3.x 中,map、filter 和 zip 函数用返回迭代器代替了列表。

5) 比较运算中的改变

比较运算的主要改变如下:

6) 整数类型的改变

整数类型的主要改变如下:

7) 字符串的改变

在 Python 2.x 中,字符串中的字符默认为单字节(8 位),字符串的类型可分为 str 和 unicode 两种。带前缀“u”或“U”的字符串为 unicode 类型,其他的字符(包含带前缀“b”“B”,“r”或“R”的字符串)为 str 类型。所有的字符串在输出时会将包含的字符直接输出。

在 Python 3.x 中,字符默认为 unicode 字符,即双字节字符。字符串的数据类型分为 str 和 bytes 两种。仍可使用字符串前缀“u”或“U”,但会被忽略。

在 Python 3.x 中,字符串前缀“b”或“B”表示二进制字符串,其类型为 bytes。

8) 取消了file数据类型

Python 3.x 取消了 2.x 中的 file 数据类型。使用 open 函数打开文件时,返回的是 IOTextWrapper 类的实例对象。

Python 2.x 的 open 函数返回的是 file 类型的对象。

9) 异常处理的改变

在 Python 3.x 中,异常处理的改变主要如下:

10) 其他主要的语法改变

其他主要的语法改变如下:

相关文章