Python 2 和 Python 3 是 Python 编程语言的两个主要版本,它们之间存在一些关键的区别。以下是它们之间的一些主要差异:
print 函数
Python 2 中,`print` 是一个语句,可以不使用括号。
Python 3 中,`print` 是一个函数,必须使用括号。
编码
Python 2 中,默认编码是 ASCII,要支持 Unicode 字符串需要显式声明编码。
Python 3 中,默认编码是 UTF-8,对 Unicode 字符的原生支持更好。
整数除法
Python 2 中,`/` 运算符执行整数除法,结果为整数。
Python 3 中,`/` 运算符执行浮点数除法,结果为浮点数。要执行整数除法,需要使用 `//` 运算符。
数据类型
Python 2 中,整数有 `int` 和 `long` 两种类型,`long` 类型可以表示任意大小的整数。
Python 3 中,只有 `int` 类型,其范围是无限的。
迭代器
Python 2 中,`range` 函数返回列表,`xrange` 函数返回迭代器,后者更节省内存。
Python 3 中,`range` 函数返回迭代器,取代了 `xrange`。
字符串和字节
Python 2 中,字符串分为 `str`(8位 ASCII 字符)和 `unicode`(宽字符)。
Python 3 中,只有一种字符串类型 `str`,表示 Unicode 字符串。
输入函数
Python 2 中,`input` 函数返回字符串,`raw_input` 函数也返回字符串。
Python 3 中,`input` 函数返回字符串,而 `eval` 函数用于执行字符串表达式。
异常处理
Python 2 中,异常处理使用 `except Exception, e:` 语法。
Python 3 中,使用 `except Exception as e:` 语法。
模块导入
Python 3 中,模块导入使用绝对路径,而 Python 2 支持相对路径导入。
类定义
Python 2 中,存在经典类(不继承自 `object`)和新式类(继承自 `object`)的区别。
Python 3 中,所有类默认继承自 `object`,必须显式地继承。
由于 Python 2 自 2020 年起停止官方维护,建议使用 Python 3 进行新项目的开发,并对遗留的 Python 2 代码进行迁移以保持兼容性。需要注意的是,尽管 Python 2 在某些情况下仍然被使用,但 Python 3 已成为当前的主流版本