Python 3(2008 年发布,2.x 已于 2020 年停止维护)与 Python 2 的主要区别:
- print:3.x 是函数
print(x),2.x 是语句print x。 - 字符串模型:3.x 中
str是 Unicode 文本,字节用bytes表示,两者严格区分、不能隐式混用;2.x 的str是字节串,unicode才是文本,隐式编解码是无数乱码 bug 的根源。 - 整数除法:3.x 中
3 / 2 == 1.5,整除用//;2.x 中3 / 2 == 1。 - 迭代化:
range、map、filter、dict.keys()等在 3.x 返回迭代器/视图而非列表(2.x 的xrange被淘汰)。 - 语法与特性:3.x 独有 f-string(3.6+)、类型注解、
async/await、海象运算符(3.8)、模式匹配(3.10)等。 - 其他:2.x 的
except E, e写法废弃;raw_input并入input;比较不同类型对象 3.x 直接报错而非按类型名排序。
回答策略:不必穷举,抓住"Unicode 模型、print、除法、迭代器化"四大核心,再补一两条现代特性即可。追问方向:迁移工具(2to3、six 兼容库)、为什么 3.x 不惜破坏向后兼容(历史债清理)。