Целочисленные объекты¶Integer Objects
Все целые числа реализованы как «длинные» целочисленные объекты произвольного размера.
При ошибке большинство 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)¶ Возвращает истину, если аргумент является
PyLongObjectили подтипомPyLongObject. Эта функция всегда завершается успешно.
-
int
PyLong_CheckExact(PyObject *p)¶ Возвращает истину, если аргумент является
PyLongObject, но не подтипомPyLongObject. Эта функция всегда завершается успешно.
-
PyObject *
PyLong_FromLong(long v)¶ - Возвращаемое значение: новая ссылка. Часть Stable ABI.
Возвращает новый объект
PyLongObjectиз v илиNULLпри ошибке.Текущая реализация хранит массив целочисленных объектов для всех целых чисел от
-5до256. Когда создаётся целое число из этого диапазона, фактически возвращается ссылка на уже существующий объект.
-
PyObject *
PyLong_FromUnsignedLong(unsigned long v)¶ - Возвращаемое значение: новая ссылка. Часть Stable ABI.
Возвращает новый объект
PyLongObjectиз Cunsigned 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из Clong longилиNULLпри ошибке.
-
PyObject *
PyLong_FromUnsignedLongLong(unsigned long long v)¶ - Возвращаемое значение: новая ссылка. Часть Stable ABI.
Возвращает новый объект
PyLongObjectиз Cunsigned 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. Если pend не равноNULL, *pend будет указывать на первый символ в str, следующий за представлением числа. Если base равно0, то str интерпретируется с помощью определения целочисленных литералов; в этом случае ведущие нули в ненулевом десятичном числе вызываютValueError. Если base не равно0, оно должно быть в диапазоне от2до36включительно. Ведущие пробелы и одиночные символы подчёркивания после указателя основания и между цифрами игнорируются. Если цифры отсутствуют, возникаетValueError.См. также
Методы Python
int.to_bytes()иint.from_bytes()для преобразованияPyLongObjectв массив байтов по основанию256и обратно. Эти методы можно вызывать из C с помощьюPyObject_CallMethod().
-
PyObject *
PyLong_FromUnicodeObject(PyObject *u, int base)¶ - Возвращаемое значение: новая ссылка.
Преобразует последовательность цифр Unicode в строке u в целое число Python.
Новое в версии 3.3.
-
PyObject *
PyLong_FromVoidPtr(void *p)¶ - Возвращаемое значение: новая ссылка. Часть Stable ABI.
Создаёт целое число Python из указателя p. Значение указателя можно извлечь из полученного значения с помощью
PyLong_AsVoidPtr().
-
long
PyLong_AsLong(PyObject *obj)¶ - Часть Stable ABI.
Возвращает C-представление
longобъекта obj. Если 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.
Возвращает C-представление
longобъекта obj. Если 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.
Возвращает C-представление
long longобъекта obj. Если 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.
Возвращает C-представление
long longобъекта obj. Если 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.
Возвращает C-представление
Py_ssize_tобъекта pylong. pylong должен быть экземпляромPyLongObject.Вызывает
OverflowError, если значение pylong выходит за пределы диапазона дляPy_ssize_t.При ошибке возвращает
-1. ИспользуйтеPyErr_Occurred()для разрешения неоднозначности.
-
unsigned long
PyLong_AsUnsignedLong(PyObject *pylong)¶ - Часть Stable ABI.
Возвращает C-представление
unsigned longдля pylong. pylong должен быть экземпляромPyLongObject.Вызывает
OverflowError, если значение pylong выходит за пределы диапазона дляunsigned long.Возвращает
(unsigned long)-1в случае ошибки. Для устранения неоднозначности используйтеPyErr_Occurred().
-
size_t
PyLong_AsSize_t(PyObject *pylong)¶ - Часть Stable ABI.
Возвращает C-представление
size_tобъекта pylong. pylong должен быть экземпляромPyLongObject.Вызывает
OverflowError, если значение pylong выходит за пределы диапазона дляsize_t.Возвращает
(size_t)-1в случае ошибки. Для устранения неоднозначности используйтеPyErr_Occurred().
-
unsigned long long
PyLong_AsUnsignedLongLong(PyObject *pylong)¶ - Часть Stable ABI.
Возвращает C-представление
unsigned long longдля pylong. 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.
Возвращает C-представление
doubleобъекта pylong. 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()для разрешения неоднозначности.