Spec-Zone.ru › Python 3.9

Целые числа

Все целые числа реализованы как объекты целых чисел типа «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 из C unsigned long, или NULL при ошибке.

PyObject* PyLong_FromSsize_t(Py_ssize_t v)
Значение возврата: Новая ссылка.

Возвращает новый объект PyLongObject из C Py_ssize_t или NULL при ошибке.

PyObject* PyLong_FromSize_t(size_t v)
Значение возврата: Новая ссылка.

Возвращает новый объект PyLongObject из C size_t, или NULL при ошибке.

PyObject* PyLong_FromLongLong(long long v)
Значение возврата: Новая ссылка.

Возвращает новый объект PyLongObject из C long long, или NULL при ошибке.

PyObject* PyLong_FromUnsignedLongLong(unsigned long long v)
Значение возврата: Новая ссылка.

Возвращает новый объект PyLongObject из C unsigned 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__() устарело.

END_OF_DOCUMENT_MARKER
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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API