Python 3.5 在兼容 3.4 的基础上新增类型提示、@矩阵乘法运算符、PEP 448 解包语法,并升级 asyncio、ssl、os.scandir 等标准库功能,同时弃用部分 distutils 函数。

Python 3.4 和 3.5 是两个连续的小版本,3.5 在 3.4 的基础上引入了若干重要新特性和改进,但整体保持兼容性。如果你正在维护一个基于 3.4 的项目,升级到 3.5 通常平滑,但需注意几个关键变化。
新增语法:带类型提示的函数定义
Python 3.5 引入了 PEP 484 定义的类型提示(Type Hints),支持在函数签名中声明参数和返回值类型:
def greet(name: str) -> str:return "Hello, " + name
这不会影响运行时行为,但为静态分析工具(如 mypy)和 IDE 提供了更强的类型检查支持。Python 3.4 不支持该语法,直接使用会报 SyntaxError。
新增操作符:矩阵乘法 @
Python 3.5 新增了 @ 运算符,专用于矩阵乘法(对应 __matmul__ 魔法方法):
立即学习“Python免费学习笔记(深入)”;
import numpy as npA = np.array([[1, 2], [3, 4]])
B = np.array([[5, 6], [7, 8]])
C = A @ B # 等价于 A.__matmul__(B)
3.4 中只能用 np.dot(A, B) 或 A.dot(B),没有原生运算符支持。
解包语法增强:PEP 448 支持更灵活的可迭代对象解包
Python 3.5 允许在字典、列表、元组等字面量中**任意位置多次使用 * 和 ** 解包**:
- [*a, *b, *c](合并多个可迭代对象)
- {**dict1, **dict2, 'key': 'value'}(合并字典并覆盖/新增键)
Python 3.4 中只支持函数调用里的 *args 和 **kwargs,字面量中不支持此类解包。
标准库更新与弃用
3.5 对部分模块做了调整:
- asyncio 正式进入标准库(3.4 已有但标记为 provisional,3.5 起稳定)
- ssl 默认启用更安全的 TLS 协议(禁用 SSLv3 及弱密码套件)
-
os.scandir() 加入(比
os.listdir()更快,尤其在大目录中) -
distutils 中部分过时函数被标记为 deprecated(如
util.get_platform())
另外,3.5 开始要求 pip ≥ 7.1.0,并默认启用 wheel 包安装。











