# API 和 ABI 版本管理

CPython 透過以下巨集 (macro) 公開其版本號。請注意，對應到的是建置 (built) 所用到的版本，並不一定是執行環境 (run time) 所使用的版本。

關於跨版本 API 和 ABI 穩定性的討論，請見 C API 穩定性。

PY_MAJOR_VERSION

  在 `3.4.1a2` 中的 `3`。

PY_MINOR_VERSION

  在 `3.4.1a2` 中的 `4`。

PY_MICRO_VERSION

  在 `3.4.1a2` 中的 `1`。

PY_RELEASE_LEVEL

  在 `3.4.1a2` 中的 `a`。`0xA` 代表 alpha 版本、`0xB` 代表 beta 版本、`0xC` 為發布候選版本、`0xF` 則為最終版。

PY_RELEASE_SERIAL

  在 `3.4.1a2` 中的 `2`。零則為最終發布版本。

PY_VERSION_HEX

  被編碼為單一整數的 Python 版本號。

  所代表的版本資訊可以用以下規則將其看做是一個 32 位元數字來獲得：

  位元組串 | 位元（大端位元組序 (big endian order)） | 意義 | `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` 代表 hexversion `0x030401a2`、`3.10.0` 代表 hexversion `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。