Целые числа
Все целые числа реализованы как объекты целых чисел типа «long» произвольного размера.
При ошибке большинство APIs PyLong_As* возвращают (return type)-1, которое нельзя отличить от числа. Используйте PyErr_Occurred() для разграничения.
-
PyLongObject -
Этот подтип
PyObjectпредставляет собой объект целого числа Python.
-
PyTypeObject PyLong_Type -
Этот экземпляр
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) -
Значение возврата: Новая ссылка.
Возвращает новый объект
PyLongObjectиз v илиNULLпри ошибке.Текущая реализация хранит массив объектов целых чисел для всех целых чисел от
-5до256. При создании целого числа в этом диапазоне вы фактически получаете ссылку на существующий объект.
-
PyObject* PyLong_FromUnsignedLong(unsigned long v) -
Значение возврата: Новая ссылка.
Возвращает новый объект
PyLongObjectиз Cunsigned long, илиNULLпри ошибке.
-
PyObject* PyLong_FromSsize_t(Py_ssize_t v) -
Значение возврата: Новая ссылка.
Возвращает новый объект
PyLongObjectиз CPy_ssize_tилиNULLпри ошибке.
-
PyObject* PyLong_FromSize_t(size_t v) -
Значение возврата: Новая ссылка.
Возвращает новый объект
PyLongObjectиз Csize_t, илиNULLпри ошибке.
-
PyObject* PyLong_FromLongLong(long long v) -
Значение возврата: Новая ссылка.
Возвращает новый объект
PyLongObjectиз Clong long, илиNULLпри ошибке.
-
PyObject* PyLong_FromUnsignedLongLong(unsigned long long v) -
Значение возврата: Новая ссылка.
Возвращает новый объект
PyLongObjectиз Cunsigned long long, илиNULLпри ошибке.
-
PyObject* PyLong_FromDouble(double v) -
Значение возврата: Новая ссылка.
Возвращает новый объект
PyLongObjectиз целой части v, илиNULLпри ошибке.
-
PyObject* PyLong_FromString(const char *str, char **pend, int base) -
Значение возврата: Новая ссылка.
Возвращает новый
PyLongObjectна основе строкового значения в str, интерпретируемого в соответствии с основанием base. Если pend неNULL, *pend будет указывать на первый символ в str, который следует за представлением числа. Если base равно0, str интерпретируется с использованием определения Литералов целых чисел; в этом случае ведущие нули в неноль десятичном числе вызываютValueError. Если base не равно0, оно должно быть между2и36, включительно. Ведущие пробелы и одиночные подчеркивания после указателя основания и между цифрами игнорируются. Если цифр нет, будет вызваноValueError.
-
PyObject* PyLong_FromUnicode(Py_UNICODE *u, Py_ssize_t length, int base) -
Значение возврата: Новая ссылка.
Преобразует последовательность символов Unicode в значение целого числа Python.
Устарело начиная с версии 3.3, будет удалено в версии 3.10: Часть старого API
Py_UNICODE; пожалуйста, перейдите к использованиюPyLong_FromUnicodeObject().
-
PyObject* PyLong_FromUnicodeObject(PyObject *u, int base) -
Значение возврата: Новая ссылка.
Преобразует последовательность символов Unicode в строке u в значение целого числа Python.
Введено в версии 3.3.
-
PyObject* PyLong_FromVoidPtr(void *p) -
Значение возврата: Новая ссылка.
Создаёт целое число Python из указателя p. Значение указателя можно получить из результирующего значения с помощью
PyLong_AsVoidPtr().
-
long PyLong_AsLong(PyObject *obj) -
Возвращает представление C
longобъекта obj. Если obj не является экземпляромPyLongObject, сначала вызывается его метод__index__()или__int__()(если он есть) для преобразования его вPyLongObject.Вызывает
OverflowError, если значение obj выходит за пределы диапазона дляlong.Возвращает
-1при ошибке. ИспользуйтеPyErr_Occurred()для разграничения.Изменено в версии 3.8: Использует
__index__(), если доступно.Устарело начиная с версии 3.8: Использование
__int__()устарело.
-
long PyLong_AsLongAndOverflow(PyObject *obj, int *overflow) -
Возвращает представление C
longобъекта obj. Если obj не является экземпляромPyLongObject, сначала вызывается его метод__index__()или__int__()(если он есть) для преобразования его вPyLongObject.Если значение obj больше
LONG_MAXили меньшеLONG_MIN, установите *overflow в1или-1соответственно и верните-1; в противном случае установите *overflow в0. Если возникает любая другая ошибка, установите *overflow в0и верните-1как обычно.Возвращает
-1при ошибке. ИспользуйтеPyErr_Occurred()для разграничения.Изменено в версии 3.8: Использует
__index__(), если доступно.Устарело начиная с версии 3.8: Использование
__int__()устарело.
-
long long PyLong_AsLongLong(PyObject *obj) -
Возвращает представление числа obj в формате C. Если obj не является экземпляром
PyLongObject, сначала вызывается его метод__index__()или__int__()(если доступен), чтобы преобразовать его вPyLongObject.Вызовет исключение
OverflowError, если значение obj выходит за пределы допустимого диапазона дляlong long.Возвращает
-1при ошибке. ИспользуйтеPyErr_Occurred()для различения.Изменено в версии 3.8: Используется
__index__(), если доступно.Устарело начиная с версии 3.8: Использование
__int__()устарело.
-
long long PyLong_AsLongLongAndOverflow(PyObject *obj, int *overflow) -
Возвращает представление числа obj в формате C. Если obj не является экземпляром
PyLongObject, сначала вызывается его метод__index__()или__int__()(если доступен), чтобы преобразовать его вPyLongObject.Если значение obj больше
LLONG_MAXили меньшеLLONG_MIN, установите *overflow в1или-1соответственно и верните-1; в противном случае установите *overflow в0. Если произойдёт любая другая ошибка, установите *overflow в0и верните-1как обычно.Возвращает
-1при ошибке. ИспользуйтеPyErr_Occurred()для различения.Добавлена в версии 3.2.
Изменено в версии 3.8: Используется
__index__(), если доступно.Устарело начиная с версии 3.8: Использование
__int__()устарело.
-
Py_ssize_t PyLong_AsSsize_t(PyObject *pylong) -
Возвращает представление числа pylong в формате C
Py_ssize_t. pylong должен быть экземпляромPyLongObject.Вызовет исключение
OverflowError, если значение pylong выходит за пределы допустимого диапазона дляPy_ssize_t.Возвращает
-1при ошибке. ИспользуйтеPyErr_Occurred()для различения.
-
unsigned long PyLong_AsUnsignedLong(PyObject *pylong) -
Возвращает представление числа pylong в формате C
unsigned long. pylong должен быть экземпляромPyLongObject.Вызовет исключение
OverflowError, если значение pylong выходит за пределы допустимого диапазона дляunsigned long.Возвращает
(unsigned long)-1при ошибке. ИспользуйтеPyErr_Occurred()для различения.
-
size_t PyLong_AsSize_t(PyObject *pylong) -
Возвращает представление числа pylong в формате C
size_t. pylong должен быть экземпляромPyLongObject.Вызовет исключение
OverflowError, если значение pylong выходит за пределы допустимого диапазона дляsize_t.Возвращает
(size_t)-1при ошибке. ИспользуйтеPyErr_Occurred()для различения.
-
unsigned long long PyLong_AsUnsignedLongLong(PyObject *pylong) -
Возвращает представление числа 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) -
Возвращает представление числа obj в формате C
unsigned long. Если obj не является экземпляромPyLongObject, сначала вызывается его метод__index__()или__int__()(если доступен), чтобы преобразовать его вPyLongObject.Если значение obj выходит за пределы допустимого диапазона для
unsigned long, возвращается остаток от деления этого значения наULONG_MAX + 1.Возвращает
(unsigned long)-1при ошибке. ИспользуйтеPyErr_Occurred()для различения.Изменено в версии 3.8: Используется
__index__(), если доступно.Устарело начиная с версии 3.8: Использование
__int__()устарело.
-
unsigned long long PyLong_AsUnsignedLongLongMask(PyObject *obj) -
Возвращает представление числа obj в формате C
unsigned long long. Если obj не является экземпляромPyLongObject, сначала вызывается его метод__index__()или__int__()(если доступен), чтобы преобразовать его вPyLongObject.Если значение obj выходит за пределы допустимого диапазона для
unsigned long long, возвращается остаток от деления этого значения наULLONG_MAX + 1.Возвращает
(unsigned long long)-1при ошибке. ИспользуйтеPyErr_Occurred()для различения.Изменено в версии 3.8: Используется
__index__(), если доступно.Устарело начиная с версии 3.8: Использование
__int__()устарело.
-
double PyLong_AsDouble(PyObject *pylong) -
Возвращает представление числа pylong в формате C
double. pylong должен быть экземпляромPyLongObject.Вызовет исключение
OverflowError, если значение pylong выходит за пределы допустимого диапазона дляdouble.Возвращает
-1.0при ошибке. ИспользуйтеPyErr_Occurred()для различения.
-
void* PyLong_AsVoidPtr(PyObject *pylong) -
Преобразовать целое число Python pylong в указатель C
void. Если pylong не может быть преобразован, будет поднято исключениеOverflowError. Это гарантирует получение полезногоvoidуказателя только для значений, созданных с помощьюPyLong_FromVoidPtr().Возвращает
NULLпри ошибке. ИспользуйтеPyErr_Occurred()для различения.
© 2001–2022 Python Software Foundation
Licensed under the PSF License.
https://docs.python.org/3.9/c-api/long.html