# Управление версиями 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 Stability 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 | Bits (big endian order) | Meaning | 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`.

  Use this for numeric comparisons, e.g. `#if PY_VERSION_HEX >= ...`.

  This version is also available via the symbol `Py_Version`.

const unsigned long Py_Version
  Часть Стабильный ABI начиная с версии 3.11.

  The Python runtime version number encoded in a single constant integer, with the same format as the `PY_VERSION_HEX` macro. This contains the Python version used at run time.

  Добавлено в версии 3.11.

All the given macros are defined in Include/patchlevel.h.