# 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`。

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