Python 2.7与3.5是代际重构的分支,核心区别在于语言设计:print变为函数、str/bytes严格分离、整数除法默认真除、3.5新增类型提示与async/await雏形等现代特性。
Python 2.7 和 3.5 是两个代际差异明显的版本,核心区别不是“小升级”,而是语言层面的重构——3.x 不是 2.x 的增强版,而是重新设计的分支。2.7 是 2.x 系列的最终维护版(2025 年已停止官方支持),3.5 则是 3.x 中首个引入关键现代特性的稳定版本。
这是最直观的变化:Python 2 中 print "hello" 是语句;Python 3 中必须写成 p。少括号会直接报错,没有兼容余地。
rint("hello")
Python 2 默认用 str 表示字节序列,unicode 表示文本,但类型混用常见且容易出错;Python 3 明确分离:str 永远是 Unicode 文本,bytes 永远是字节序列。打开文件时默认使用文本模式(UTF-8),读写二进制需显式加 b 标志(如 open("f.bin", "rb"))。
Python 2 中 5 / 2 结果是 2(取整除);Python 3 中结果是 2.5(真除法)。要得到整除,必须用 //(如 5 // 2 → 2)。这个变化避免了隐式截断导致的逻辑错误。
Python 3.5 新增了重要特性,比如:
def greet(name: str) -> str: 这类标注,便于工具检查和协作理解*lst 在任意位置解包(如 [1, *a, 2])urllib2 拆分为 urllib.request 和 urllib.error,ConfigParser 改为 configparser(小写模块名)基本上就这些。迁移时最常踩坑的是字符串编码、print 写法、除法逻辑和库导入路径——不是语法多难,而是思维惯性容易忽略底层模型变化。