Целочисленные объекты¶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из 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. Если 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.
Возвращает C-представление unsigned long объекта obj. Если 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.
Возвращает представление unsigned long long на языке C для obj. Если 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.
Возвращает представление double на языке C для pylong. pylong должен быть экземпляром
PyLongObject.Возбуждает исключение
OverflowError, если значение pylong выходит за пределы диапазона для double.При ошибке возвращает
-1.0. ИспользуйтеPyErr_Occurred()для разрешения неоднозначности.
-
void *PyLong_AsVoidPtr(PyObject *pylong)¶
- Часть Stable ABI.
Преобразует целое число Python pylong в указатель void на языке C. Если pylong не удаётся преобразовать, возбуждается исключение
OverflowError. Это гарантирует, что полученный указатель void будет пригоден для использования только для значений, созданных с помощьюPyLong_FromVoidPtr().При ошибке возвращает
NULL. ИспользуйтеPyErr_Occurred()для разрешения неоднозначности.