# Python 3.15 中的待移除功能

- `http.server.CGIHTTPRequestHandler` 将同 `python -m http.server` 中与其相关的 `--cgi` 旗标一起被移除。 它已经过时并且很少被使用。 不存在直接的替代品。 对于建立 Web 服务器与请求处理器的接口的任务来说 任何东西 都比 CGI 要好。

- `importlib`:

  - `load_module()` 方法：改用 `exec_module()`。

- `locale`: `locale.getdefaultlocale()` 在 Python 3.11 中已被弃用并且原计划在 Python 3.13 中移除 (gh-90817)，但移除时间已被推迟至 Python 3.15。 请改用 `locale.setlocale()`, `locale.getencoding()` 和 `locale.getlocale()`。 （由 Hugo van Kemenade 在 gh-111187 中贡献。）

- `pathlib`：`pathlib.PurePath.is_reserved()` 已被弃用，并计划在 Python 3.15 中移除。从 Python 3.13 起，请在 Windows 上使用``os.path.isreserved`` 检测保留路径。

- `platform`: `java_ver()` 已被弃用并将在 3.15 中移除。 它几乎未经测试，具有令人困惑的 API，并且仅适用于 Jython 支持。 （由 Nikita Sobolev 在 gh-116349 中贡献。）

- `sysconfig`:

  - `sysconfig.is_python_build()` 的 check_home 参数自 Python 3.12 起已被弃用。

- `threading`: 向 `threading.RLock()` 传入任意参数的做法现已被弃用。 C 版本允许任意数量的 args 和 kwargs，但它们都会被忽略。 Python 版本不允许任何参数。 在 Python 3.15 中将从 `threading.RLock()` 移除所有参数。 （由 Nikita Sobolev 在 gh-102029 中贡献。）

- `typing.NamedTuple`:

  - 创建 `NamedTuple` 类 (`NT = NamedTuple("NT", x=int)`) 的关键字参数语法从未写入文档且已被弃用，并将在 3.15 中被禁止。 请改用基于类的语法或函数语法。

- `types`:

  - `types.CodeType`: 访问 `co_lnotab` 的做法自 3.10 起已根据 PEP 626 被弃用并曾计划在 3.12 中移除，但在 3.12 中实际仅设置了 `DeprecationWarning`。 可能会在 3.15 中移除。 （由 Nikita Sobolev 在 gh-101866 中贡献。）

- `typing`:

  - 当使用函数式语法创建 `NamedTuple` 类时，不向 fields 形参传值的做法 (`NT = NamedTuple("NT")`) 已被弃用。 将 `None` 传给 fields 形参的做法 (`NT = NamedTuple("NT", None)`) 也已被弃用。 两者都将在 Python 3.15 中被禁止。 要创建拥有 0 个字段的 `NamedTuple` 类，请使用 `class NT(NamedTuple): pass` 或 `NT = NamedTuple("NT", [])`。

- `typing.TypedDict`: 当使用函数语法创建 `TypedDict` 类时，不向 fields 形参传值 (`TD = TypedDict("TD")`) 的行为已被弃用。 将 `None` 传给 fields 形参 (`TD = TypedDict("TD", None)`) 的行为也已被弃用。 两者都将在 Python 3.15 中被禁止。 要创建拥有 0 个字段的 `TypedDict` 类，请使用 `class TD(TypedDict): pass` 或 `TD = TypedDict("TD", {})`。

- `wave`: 已弃用 `wave.Wave_read` 和 `wave.Wave_write` 类的 `getmark()`, `setmark()` 和 `getmarkers()` 方法。 它们将在 Python 3.15 中被移除。 （由 Victor Stinner 在 gh-105096 中贡献。）