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
  • 迭代化rangemapfilterdict.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 不惜破坏向后兼容(历史债清理)。