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

CPython exposes its version number in the following macros. Note that these correspond to the version code is built with, not necessarily the version used at run time.

See C API の安定性 for a discussion of API and ABI stability across versions.

`PY_MAJOR_VERSION`

  The `3` in `3.4.1a2`.

`PY_MINOR_VERSION`

  The `4` in `3.4.1a2`.

`PY_MICRO_VERSION`

  The `1` in `3.4.1a2`.

`PY_RELEASE_LEVEL`

  The `a` in `3.4.1a2`. This can be `0xA` for alpha, `0xB` for beta, `0xC` for release candidate or `0xF` for final.

`PY_RELEASE_SERIAL`

  The `2` in `3.4.1a2`. Zero for final releases.

`PY_VERSION_HEX`

  The Python version number encoded in a single integer.

  The underlying version information can be found by treating it as a 32 bit number in the following manner:

  bytes | ビット (ビッグエンディアンオーダ) | 意味 | Value for `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`

  Thus `3.4.1a2` is hexversion `0x030401a2` and `3.10.0` is hexversion `0x030a00f0`.

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