Целочисленные объекты
Все целые числа реализованы как «длинные» целочисленные объекты произвольного размера.
При ошибке большинство API PyLong_As* возвращают (return type)-1, которое невозможно отличить от числа. Используйте PyErr_Occurred() для устранения неоднозначности.
-
type PyLongObject -
Часть Limited API (как непрозрачная структура).
Этот подтип
PyObjectпредставляет целочисленный объект Python.
-
PyTypeObject PyLong_Type -
Часть Stable ABI.
Этот экземпляр
PyTypeObjectпредставляет целочисленный тип Python. Это тот же самый объект, что иintна уровне Python.
-
int PyLong_Check(PyObject *p) -
Возвращает истину (true), если аргумент является
PyLongObjectили подтипомPyLongObject. Эта функция всегда завершается успешно.
-
int PyLong_CheckExact(PyObject *p) -
Возвращает истину (true), если аргумент является
PyLongObject, но не подтипомPyLongObject. Эта функция всегда завершается успешно.
-
PyObject *PyLong_FromLong(long v) -
Возвращаемое значение: Новая ссылка. Часть Stable ABI.
Возвращает новый объект
PyLongObjectиз v илиNULLв случае ошибки.Текущая реализация хранит массив целочисленных объектов для всех целых чисел от
-5до256. При создании int в этом диапазоне вы на самом деле просто получаете ссылку на существующий объект.
-
PyObject *PyLong_FromUnsignedLong(unsigned long v) -
Возвращаемое значение: Новая ссылка. Часть Stable ABI.
Возвращает новый объект
PyLongObjectиз C unsigned long илиNULLв случае ошибки.
-
PyObject *PyLong_FromSsize_t(Py_ssize_t v) -
Возвращаемое значение: Новая ссылка. Часть Stable ABI.
Возвращает новый объект
PyLongObjectиз CPy_ssize_tилиNULLв случае ошибки.
-
PyObject *PyLong_FromSize_t(size_t v) -
Возвращаемое значение: Новая ссылка. Часть Stable ABI.
Возвращает новый объект
PyLongObjectиз Csize_tилиNULLв случае ошибки.
-
PyObject *PyLong_FromLongLong(long long v) -
Возвращаемое значение: Новая ссылка. Часть Stable ABI.
Возвращает новый объект
PyLongObjectиз C long long илиNULLв случае ошибки.
-
PyObject *PyLong_FromUnsignedLongLong(unsigned long long v) -
Возвращаемое значение: Новая ссылка. Часть Stable ABI.
Возвращает новый объект
PyLongObjectиз C unsigned long long илиNULLв случае ошибки.
-
PyObject *PyLong_FromDouble(double v) -
Возвращаемое значение: Новая ссылка. Часть Stable ABI.
Возвращает новый объект
PyLongObjectиз целочисленной части v илиNULLв случае ошибки.
-
PyObject *PyLong_FromString(const char *str, char **pend, int base) -
Возвращаемое значение: Новая ссылка. Часть Stable ABI.
Возвращает новый
PyLongObjectна основе строкового значения в str, которое интерпретируется в соответствии с основанием системы счисления в base, илиNULLв случае ошибки. Если pend не равенNULL, *pend будет указывать на конец str при успехе или на первый символ, который не удалось обработать, при ошибке. Если base равен0, str интерпретируется в соответствии с определением Целочисленные литералы; в этом случае ведущие нули в ненулевом десятичном числе приводят к вызовуValueError. Если base не равен0, он должен быть в диапазоне от2до36включительно. Начальные и конечные пробельные символы и одиночные символы подчеркивания после спецификатора основания и между цифрами игнорируются. Если цифры отсутствуют или str не завершается NULL после цифр и конечных пробельных символов, будет вызвано исключениеValueError.См. также
Методы Python
int.to_bytes()иint.from_bytes()для преобразованияPyLongObjectв массив байтов по основанию256и обратно. Их можно вызвать из C с помощьюPyObject_CallMethod().
-
PyObject *PyLong_FromUnicodeObject(PyObject *u, int base) -
Возвращаемое значение: Новая ссылка.
Преобразует последовательность цифр Юникода в строке u в целочисленное значение Python.
Добавлено в версии 3.3.
-
PyObject *PyLong_FromVoidPtr(void *p) -
Возвращаемое значение: Новая ссылка. Часть Stable ABI.
Создает целое число Python из указателя p. Значение указателя можно извлечь из полученного значения с помощью
PyLong_AsVoidPtr().
-
long PyLong_AsLong(PyObject *obj) -
Часть Stable ABI.
Возвращает представление obj в виде C long. Если obj не является экземпляром
PyLongObject, сначала вызывается его метод__index__()(если он есть), чтобы преобразовать его вPyLongObject.Вызывает
OverflowError, если значение obj выходит за пределы диапазона для long.Возвращает
-1в случае ошибки. ИспользуйтеPyErr_Occurred()для устранения неоднозначности.Изменено в версии 3.8: Используется
__index__(), если доступно.Изменено в версии 3.10: Эта функция больше не использует
__int__().
-
long PyLong_AsLongAndOverflow(PyObject *obj, int *overflow) -
Часть Stable ABI.
Возвращает представление obj в виде C long. Если obj не является экземпляром
PyLongObject, сначала вызывается его метод__index__()(если он есть), чтобы преобразовать его вPyLongObject.Если значение obj больше
LONG_MAXили меньшеLONG_MIN, устанавливает *overflow в1или-1соответственно и возвращает-1; в противном случае устанавливает *overflow в0. При возникновении любого другого исключения устанавливает *overflow в0и возвращает-1, как обычно.Возвращает
-1в случае ошибки. ИспользуйтеPyErr_Occurred()для устранения неоднозначности.Изменено в версии 3.8: Используется
__index__(), если доступно.Изменено в версии 3.10: Эта функция больше не использует
__int__().
-
long long PyLong_AsLongLong(PyObject *obj) -
Часть Stable ABI.
Возвращает представление obj в виде C long long. Если obj не является экземпляром
PyLongObject, сначала вызывается его метод__index__()(если он есть), чтобы преобразовать его вPyLongObject.Вызывает
OverflowError, если значение obj выходит за пределы диапазона для long long.Возвращает
-1в случае ошибки. ИспользуйтеPyErr_Occurred()для устранения неоднозначности.Изменено в версии 3.8: Используется
__index__(), если доступно.Изменено в версии 3.10: Эта функция больше не использует
__int__().
-
long long PyLong_AsLongLongAndOverflow(PyObject *obj, int *overflow) -
Часть Stable ABI.
Возвращает представление obj в виде C long long. Если obj не является экземпляром
PyLongObject, сначала вызывается его метод__index__()(если он есть), чтобы преобразовать его вPyLongObject.Если значение obj больше
LLONG_MAXили меньшеLLONG_MIN, устанавливает *overflow в1или-1соответственно и возвращает-1; в противном случае устанавливает *overflow в0. При возникновении любого другого исключения устанавливает *overflow в0и возвращает-1, как обычно.Возвращает
-1в случае ошибки. ИспользуйтеPyErr_Occurred()для устранения неоднозначности.Добавлено в версии 3.2.
Изменено в версии 3.8: Используется
__index__(), если доступно.Изменено в версии 3.10: Эта функция больше не использует
__int__().
-
Py_ssize_t PyLong_AsSsize_t(PyObject *pylong) -
Часть Stable ABI.
Возвращает представление pylong в виде C
Py_ssize_t. pylong должен быть экземпляромPyLongObject.Вызывает
OverflowError, если значение pylong выходит за пределы диапазона дляPy_ssize_t.Возвращает
-1в случае ошибки. ИспользуйтеPyErr_Occurred()для устранения неоднозначности.
-
unsigned long PyLong_AsUnsignedLong(PyObject *pylong) -
Часть Stable ABI.
Возвращает представление pylong в виде C unsigned long. pylong должен быть экземпляром
PyLongObject.Вызывает
OverflowError, если значение pylong выходит за пределы диапазона для unsigned long.Возвращает
(unsigned long)-1в случае ошибки. ИспользуйтеPyErr_Occurred()для устранения неоднозначности.
-
size_t PyLong_AsSize_t(PyObject *pylong) -
Часть Stable ABI.
Возвращает представление pylong в виде C
size_t. pylong должен быть экземпляромPyLongObject.Вызывает
OverflowError, если значение pylong выходит за пределы диапазона дляsize_t.Возвращает
(size_t)-1в случае ошибки. ИспользуйтеPyErr_Occurred()для устранения неоднозначности.
-
unsigned long long PyLong_AsUnsignedLongLong(PyObject *pylong) -
Часть Stable ABI.
Возвращает представление pylong в виде C unsigned long long. pylong должен быть экземпляром
PyLongObject.Вызывает
OverflowError, если значение pylong выходит за пределы диапазона для unsigned long long.Возвращает
(unsigned long long)-1в случае ошибки. ИспользуйтеPyErr_Occurred()для устранения неоднозначности.Изменено в версии 3.1: Отрицательное значение pylong теперь вызывает
OverflowError, а неTypeError.
-
unsigned long PyLong_AsUnsignedLongMask(PyObject *obj) -
Часть Stable ABI.
Возвращает представление obj в виде C unsigned long. Если obj не является экземпляром
PyLongObject, сначала вызывается его метод__index__()(если он есть), чтобы преобразовать его вPyLongObject.Если значение obj выходит за пределы диапазона для unsigned long, возвращает остаток от деления этого значения по модулю
ULONG_MAX + 1.Возвращает
(unsigned long)-1в случае ошибки. ИспользуйтеPyErr_Occurred()для устранения неоднозначности.Изменено в версии 3.8: Используется
__index__(), если доступно.Изменено в версии 3.10: Эта функция больше не использует
__int__().
-
unsigned long long PyLong_AsUnsignedLongLongMask(PyObject *obj) -
Часть Stable ABI.
Возвращает представление obj в виде C unsigned long long. Если obj не является экземпляром
PyLongObject, сначала вызывается его метод__index__()(если он есть), чтобы преобразовать его вPyLongObject.Если значение obj выходит за пределы диапазона для unsigned long long, возвращает остаток от деления этого значения по модулю
ULLONG_MAX + 1.Возвращает
(unsigned long long)-1в случае ошибки. ИспользуйтеPyErr_Occurred()для устранения неоднозначности.Изменено в версии 3.8: Используется
__index__(), если доступно.Изменено в версии 3.10: Эта функция больше не использует
__int__().
-
double PyLong_AsDouble(PyObject *pylong) -
Часть Stable ABI.
Возвращает представление pylong в виде C double. pylong должен быть экземпляром
PyLongObject.Вызывает
OverflowError, если значение pylong выходит за пределы диапазона для double.Возвращает
-1.0в случае ошибки. ИспользуйтеPyErr_Occurred()для устранения неоднозначности.
-
void *PyLong_AsVoidPtr(PyObject *pylong) -
Часть Stable ABI.
Преобразует целое число Python pylong в указатель C void. Если pylong не может быть преобразован, будет вызвано исключение
OverflowError. Гарантируется получение пригодного к использованию указателя void только для значений, созданных с помощьюPyLong_FromVoidPtr().Возвращает
NULLв случае ошибки. ИспользуйтеPyErr_Occurred()для устранения неоднозначности.
-
PyObject *PyLong_GetInfo(void) -
Часть Stable ABI.
При успехе возвращает доступный только для чтения именованный кортеж, содержащий информацию о внутреннем представлении целых чисел в Python. См. описание отдельных полей в
sys.int_info.В случае ошибки возвращает
NULLс установленным исключением.Добавлено в версии 3.1.
-
int PyUnstable_Long_IsCompact(const PyLongObject *op) -
Это Unstable API. Он может измениться без предупреждения в минорных релизах.
Возвращает 1, если op является компактным, и 0 в противном случае.
Эта функция позволяет коду, критичному к производительности, реализовать «быстрый путь» для малых целых чисел. Для компактных значений используйте
PyUnstable_Long_CompactValue(); для остальных используйте функциюPyLong_As*илиcallingint.to_bytes().Ожидается, что ускорение будет незначительным для большинства пользователей.
То, какие именно значения считаются компактными, является деталью реализации и может измениться.
Добавлено в версии 3.12.
-
Py_ssize_t PyUnstable_Long_CompactValue(const PyLongObject *op) -
Это Unstable API. Он может измениться без предупреждения в минорных релизах.
Если op является компактным, как определено функцией
PyUnstable_Long_IsCompact(), возвращает его значение.В противном случае возвращаемое значение не определено.
Добавлено в версии 3.12.
© 2001–2024 Python Software Foundation
Licensed under the PSF License.
https://docs.python.org/3.12/c-api/long.html