Python 2于2000年发布,长期作为全球数百万开发者的主要编程工具。2008年,革命性的新版本——Python 3问世,对语言架构进行了重大改进。
Python 3最初并未完全兼容Python 2,这在开发者社区中引发了争议,并延缓了其大规模普及。然而,经过15年以上的发展,Python 3已成为毋庸置疑的行业标准。
Python 3的诞生背景
创建Python 3是为了消除Python 2中阻碍语言发展的根本性架构缺陷:
改进Unicode支持——Python 3默认使用Unicode字符串,这对现代多语言应用至关重要。
优化数据类型处理——更清晰地区分字节和字符串,消除类型歧义。
统一语法和语义——消除语言中的矛盾,创建更符合逻辑、更可预测的结构。
Python 2与Python 3的核心区别
文本与编码处理
Python 2:
print type("文本") # <type 'str'>
print type(u"文本") # <type 'unicode'>
Python 3:
print(type("文本")) # <class 'str'> - 默认Unicode
print(type(b"文本")) # <class 'bytes'>
Python 3原生支持Unicode,解决了Python 2中常见的编码问题。
数学运算
Python 2:
print 5 / 2 # 2(整数除法)
print 5.0 / 2 # 2.5(浮点数除法)
Python 3:
print(5 / 2) # 2.5(真除法)
print(5 // 2) # 2(整数除法)
在Python 3中,/运算符始终返回浮点数结果,使行为更加可预测。
语法变化
print函数:
# Python 2
print "你好,世界!"
# Python 3
print("你好,世界!")
input函数:
# Python 2
name = raw_input("请输入姓名:") # 字符串
age = input("请输入年龄:") # 执行eval()
# Python 3
name = input("请输入姓名:") # 始终返回字符串
age = int(input("请输入年龄:")) # 显式类型转换
迭代器与生成器
Python 2:
range(5) # 返回列表 [0, 1, 2, 3, 4]
xrange(5) # 返回生成器
keys = dict.keys() # 返回列表
Python 3:
range(5) # 返回生成器
list(range(5)) # [0, 1, 2, 3, 4]
keys = dict.keys() # 返回字典视图
当前版本支持状况
Python 2已停止支持
2020年1月1日,Python软件基金会正式停止对Python 2.7的支持。这意味着:
- 不再提供安全更新
- 停止开发新功能
- 不再修复关键错误
- 主流库停止支持
Python 3持续活跃发展
Python 3仍在积极开发中,定期发布更新:
- Python 3.12(2023年)——性能提升和新的类型注解功能
- Python 3.13(2024年)——实验性JIT编译器