# API と ABI のバージョニング

CPython は以下のマクロでバージョン番号を公開しています。これらはコードが ビルドされた バージョンに対応しており、必ずしも 実行時 に使われるバージョンではないことに注意してください。

バージョン間の 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` 、ベータでは `0xB` 、リリース候補では `0xC` 、最終版では `0xF` となります。

`PY_RELEASE_SERIAL`

  `3.4.1a2` の `2` 。最終リリースでは 0 になります。

`PY_VERSION_HEX`

  Python のバージョン番号を単一の整数に符号化したものです。

  下記のように32ビットの値として扱うことで、バージョン情報を得ることができます:

  bytes | ビット (ビッグエンディアンオーダ) | 意味 | `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` は16進数で `0x030401a2` であり、 `3.10.0` は16進数で `0x030a00f0` です。

これらのマクロは Include/patchlevel.h で定義されています。