# API 和 ABI 版本管理

CPython 在下列宏中暴露其版本号。 请注意这对应于 编译 用版本代码，而不是 运行时 使用的版本。

请参阅 C API 的稳定性 查看跨版本的 API 和 ABI 稳定情。

PY_MAJOR_VERSION

  `3` (`3.4.1a2` 中的第一段)。

PY_MINOR_VERSION

  `4` (`3.4.1a2` 中的第二段)。

PY_MICRO_VERSION

  `1` (`3.4.1a2` 中第三段的数字)。

PY_RELEASE_LEVEL

  `a` (`3.4.1a2` 中第3段的字母)。 可能为 `0xA` 即 alpha, `0xB` 即 beta, `0xC` 即 release candidate 或 `0xF` 即 final。

PY_RELEASE_SERIAL

  `2` (`3.4.1a2` 中的末尾数字)。 零代表最终发布版。

PY_VERSION_HEX

  编码为单个整数形式的 Python 版本号。

  底层的版本信息可通过按以下方式将其当作 32 比特的数字处理来获取:

  字节串 | 位数（大端字节序） | 含意 | `3.4.1a2` 的值
  --- | --- | --- | ---
  1 | 1-8 | `PY_MAJOR_VERSION` | `0x03`
  2 | 9-16 | `PY_MINOR_VERSION` | `0x04`
  3 | 17-24 | `PY_MICRO_VERSION` | `0x01`
  4 | 25-28 | `PY_RELEASE_LEVEL` | `0xA`
  29-32 | `PY_RELEASE_SERIAL` | `0x2`

  这样 `3.4.1a2` 即十六进制版本号的 `0x030401a2` 而 `3.10.0` 即十六进制版本号的 `0x030a00f0`。

  用于进行数值比较，例如 `#if PY_VERSION_HEX >= ...`。

  该版本还可通过符号 `Py_Version` 获取。

const unsigned long Py_Version
  属于 稳定 ABI 自 3.11 版起.

  Python 运行时版本号编码在一个整数常量中，所用格式与 `PY_VERSION_HEX` 宏的相同。 这包含了在运行时使用的 Python 版本。

  在 3.11 版本加入.

所有提到的宏都定义在 Include/patchlevel.h。