Python 2和Python 3是Python编程语言的两个不同的版本。它们之间有许多差异,以下是一些主要的区别:
-
打印语句:
-
Python 2:使用
print
作为语句,不需要括号。pythonprint "Hello, world!"
-
Python 3:
print
是一个函数,需要使用括号。pythonprint("Hello, world!")
-
-
整数除法:
-
Python 2:除法(
/
)在整数之间会得到整数结果。python3 / 2 # 结果是 1
-
Python 3:除法(
/
)总是得到浮点数结果,整数除法需要使用//
。python3 / 2 # 结果是 1.5 3 // 2 # 结果是 1
-
-
Unicode:
- Python 2:默认字符串类型是字节串,Unicode 字符串需要明确声明。
- Python 3:默认字符串类型是Unicode,字节串需要明确声明。
-
异常语法:
-
Python 2:使用逗号分隔异常和变量。
pythontry: # 代码 except Exception, e: # 处理异常
-
Python 3:使用
as
关键字。pythontry: # 代码 except Exception as e: # 处理异常
-
-
输入函数:
- Python 2:
raw_input()
用于输入字符串,input()
用于执行表达式。 - Python 3:
input()
用于输入字符串,没有raw_input()
。
- Python 2:
-
迭代器和生成器:
- Python 2:
range()
返回一个列表,xrange()
返回一个迭代器。 - Python 3:
range()
返回一个迭代器,没有xrange()
。
- Python 2:
-
模块和包:
- Python 2:旧的模块导入方式,如
import module
。 - Python 3:新的模块导入方式,如
from module import function
。
- Python 2:旧的模块导入方式,如
-
函数参数:
- Python 2:参数默认值是在函数定义时计算的。
- Python 3:参数默认值是在函数调用时计算的。
-
编码问题:
- Python 2:需要手动处理编码问题。
- Python 3:默认使用UTF-8编码。
-
库和函数的变化:
- 许多库和函数在Python 3中被重写或替换,例如
urllib
、urllib2
和httplib
在Python 3中被合并为urllib
。
- 许多库和函数在Python 3中被重写或替换,例如
由于这些差异,Python 2和Python 3的代码并不总是兼容的。Python 2已于2020年1月1日停止官方支持,因此推荐使用Python 3进行新项目的开发。