Целочисленные объекты

Все целые числа реализуются как «длинные» целочисленные объекты произвольного размера.

При ошибке большинство API PyLong_As* возвращают (return type)-1, которое невозможно отличить от числа. Используйте PyErr_Occurred(), чтобы определить разницу.

type PyLongObject
Part of the Limited API (as an opaque struct).

Этот подтип PyObject представляет целочисленный объект Python.

PyTypeObject PyLong_Type
Part of the 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)
Return value: New reference. Part of the Stable ABI.

Возвращает новый объект PyLongObject из v, или NULL при неудаче.

Текущая реализация хранит массив целочисленных объектов для всех целых чисел между -5 и 256. Когда вы создаете int в этом диапазоне, вы фактически просто получаете обратно ссылку на существующий объект.

PyObject *PyLong_FromUnsignedLong(unsigned long v)
Return value: New reference. Part of the Stable ABI.

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

PyObject *PyLong_FromSsize_t(Py_ssize_t v)
Return value: New reference. Part of the Stable ABI.

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

PyObject *PyLong_FromSize_t(size_t v)
Return value: New reference. Part of the Stable ABI.

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

PyObject *PyLong_FromLongLong(long long v)
Return value: New reference. Part of the Stable ABI.

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

PyObject *PyLong_FromUnsignedLongLong(unsigned long long v)
Return value: New reference. Part of the Stable ABI.

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

PyObject *PyLong_FromDouble(double v)
Return value: New reference. Part of the Stable ABI.

Возвращает новый объект PyLongObject из целочисленной части v, или NULL при неудаче.

PyObject *PyLong_FromString(const char *str, char **pend, int base)
Return value: New reference. Part of the Stable ABI.

Возвращает новое PyLongObject на основе строкового значения в str, которое интерпретируется в соответствии с радиксом в base. Если pend не``NULL``, *pend будет указывать на первый символ в str, который следует за представлением числа. Если base равно 0, str интерпретируется с использованием определения Целочисленные литералы; в этом случае ведущие нули в ненулевом десятичном числе вызывают ValueError. Если base не является 0, оно должно быть между 2 и 36, включительно. Ведущие пробелы и одиночные символы подчеркивания после спецификатора базы и между цифрами игнорируются. Если цифр нет, будет выдано сообщение ValueError.

PyObject *PyLong_FromUnicodeObject(PyObject *u, int base)
Return value: New reference.

Преобразование последовательности цифр Unicode в строке u в целочисленное значение Python.

Добавлено в версии 3.3.

PyObject *PyLong_FromVoidPtr(void *p)
Return value: New reference. Part of the Stable ABI.

Создайте целое число Python из указателя p. Значение указателя можно извлечь из полученного значения с помощью PyLong_AsVoidPtr().

long PyLong_AsLong(PyObject *obj)
Part of the 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)
Part of the Stable ABI.

Возвращает представление obj в формате C long. Если obj не является экземпляром PyLongObject, сначала вызовите его метод __index__() (если он есть) для преобразования в PyLongObject.

Если значение obj больше LONG_MAX или меньше LONG_MIN, установите *overflow в 1 или -1 соответственно и верните -1; в противном случае установите *overflow в 0. Если произойдет любое другое исключение, установите *переполнение в 0 и верните -1 как обычно.

Возвращает -1 при ошибке. Используйте PyErr_Occurred() для разграничения.

Изменено в версии 3.8: Используйте __index__(), если доступно.

Изменено в версии 3.10: Эта функция больше не будет использовать __int__().

long long PyLong_AsLongLong(PyObject *obj)
Part of the 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)
Part of the Stable ABI.

Возвращает представление obj в формате C long long. Если obj не является экземпляром PyLongObject, сначала вызовите его метод __index__() (если он есть) для преобразования в PyLongObject.

Если значение obj больше LLONG_MAX или меньше LLONG_MIN, установите *overflow в 1 или -1 соответственно и верните -1; в противном случае установите *overflow в 0. Если произойдет любое другое исключение, установите *переполнение в 0 и верните -1 как обычно.

Возвращает -1 при ошибке. Используйте PyErr_Occurred() для разграничения.

Добавлено в версии 3.2.

Изменено в версии 3.8: Используйте __index__(), если доступно.

Изменено в версии 3.10: Эта функция больше не будет использовать __int__().

Py_ssize_t PyLong_AsSsize_t(PyObject *pylong)
Part of the Stable ABI.

Возвращает представление pylong в формате C Py_ssize_t. pylong должен быть экземпляром PyLongObject.

Поднимите OverflowError, если значение pylong находится вне диапазона для Py_ssize_t.

Возвращает -1 при ошибке. Используйте PyErr_Occurred() для разграничения.

unsigned long PyLong_AsUnsignedLong(PyObject *pylong)
Part of the Stable ABI.

Возвращает представление pylong в формате C unsigned long. pylong должен быть экземпляром PyLongObject.

Поднимите OverflowError, если значение pylong находится вне диапазона для unsigned long.

Возвращает (unsigned long)-1 при ошибке. Используйте PyErr_Occurred() для разграничения.

size_t PyLong_AsSize_t(PyObject *pylong)
Part of the Stable ABI.

Возвращает представление pylong в формате C size_t. pylong должен быть экземпляром PyLongObject.

Поднимите OverflowError, если значение pylong находится вне диапазона для size_t.

Возвращает (size_t)-1 при ошибке. Используйте PyErr_Occurred() для разграничения.

unsigned long long PyLong_AsUnsignedLongLong(PyObject *pylong)
Part of the 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)
Part of the 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)
Part of the 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)
Part of the Stable ABI.

Возвращает представление pylong в формате C double. pylong должен быть экземпляром PyLongObject.

Поднимите OverflowError, если значение pylong находится вне диапазона для double.

Возвращает -1.0 при ошибке. Используйте PyErr_Occurred() для разграничения.

void *PyLong_AsVoidPtr(PyObject *pylong)
Part of the Stable ABI.

Преобразование целого числа Python pylong в указатель C void. Если pylong не может быть преобразовано, будет выдано сообщение OverflowError. Это гарантировано только для получения пригодного для использования указателя void для значений, созданных с помощью PyLong_FromVoidPtr().

Возвращает NULL при ошибке. Используйте PyErr_Occurred() для разграничения.

Вернуться на верх