Phiên bản API và ABI¶
Hằng số phiên bản tại thời điểm xây dựng¶
CPython hiển thị số phiên bản của nó trong các macro sau. Lưu ý rằng những mã này tương ứng với mã phiên bản là built. Xem Py_Version để biết phiên bản được sử dụng tại run time.
Xem C API Tính ổn định để biết thảo luận về độ ổn định của API và ABI trên các phiên bản.
-
PY_MAJOR_VERSION¶
Zz000zz trong
3.4.1a2.
-
PY_MINOR_VERSION¶
Zz000zz trong
3.4.1a2.
-
PY_MICRO_VERSION¶
Zz000zz trong
3.4.1a2.
-
PY_RELEASE_LEVEL¶
Zz000zz trong
3.4.1a2. Đây có thể là0xAcho bản alpha,0xBcho bản beta,0xCcho ứng cử viên phát hành hoặc0xFcho bản cuối cùng.
-
PY_RELEASE_SERIAL¶
Zz000zz trong
3.4.1a2. Zero cho bản phát hành cuối cùng.
-
PY_VERSION_HEX¶
Số phiên bản Python được mã hóa dưới dạng một số nguyên duy nhất. Xem
Py_PACK_FULL_VERSION()để biết chi tiết mã hóa.Sử dụng điều này để so sánh số, ví dụ:
#if PY_VERSION_HEX >= ....
Các macro này được xác định trong Include/patchlevel.h.
Phiên bản thời gian chạy¶
-
const unsigned long Py_Version¶
- Một phần của ABI ổn định kể từ phiên bản 3.11.
Số phiên bản thời gian chạy Python được mã hóa bằng một số nguyên không đổi. Xem
Py_PACK_FULL_VERSION()để biết chi tiết mã hóa. Phiên bản này chứa phiên bản Python được sử dụng trong thời gian chạy.Sử dụng điều này để so sánh số, ví dụ:
if (Py_Version >= ...).Added in version 3.11.
Macro đóng gói bit¶
-
uint32_t Py_PACK_FULL_VERSION(int major, int minor, int micro, int release_level, int release_serial)¶
- Một phần của ABI ổn định kể từ phiên bản 3.14.
Trả về phiên bản đã cho, được mã hóa dưới dạng một số nguyên 32 bit với cấu trúc sau:
Lý lẽ
Số bit
Mặt nạ bit
Dịch chuyển bit
Giá trị mẫu
3.4.1a23.10.0major
8
0xFF00000024
0x030x03minor
8
0x00FF000016
0x040x0Amicro
8
0x0000FF008
0x010x00release_level
4
0x000000F04
0xA0xFrelease_serial
4
0x0000000F0
0x20x0Ví dụ:
Phiên bản
đối số
Py_PACK_FULL_VERSIONPhiên bản được mã hóa
3.4.1a2(3, 4, 1, 0xA, 2)0x030401a23.10.0(3, 10, 0, 0xF, 0)0x030a00f0Các bit ngoài phạm vi trong các đối số sẽ bị bỏ qua. Tức là, macro có thể được định nghĩa là:
#ifndef Py_PACK_FULL_VERSION #define Py_PACK_FULL_VERSION(X, Y, Z, LEVEL, SERIAL) ( \ (((X) & 0xff) << 24) | \ (((Y) & 0xff) << 16) | \ (((Z) & 0xff) << 8) | \ (((LEVEL) & 0xf) << 4) | \ (((SERIAL) & 0xf) << 0)) #endif
Py_PACK_FULL_VERSIONchủ yếu là macro, được thiết kế để sử dụng trong các lệnh#if, nhưng nó cũng có sẵn dưới dạng hàm xuất.Added in version 3.14.
-
uint32_t Py_PACK_VERSION(int major, int minor)¶
- Một phần của ABI ổn định kể từ phiên bản 3.14.
Tương đương với
Py_PACK_FULL_VERSION(major, minor, 0, 0, 0). Kết quả không tương ứng với bất kỳ bản phát hành Python nào, nhưng rất hữu ích trong việc so sánh số.Added in version 3.14.