Документация Python неофициальный перевод

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

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

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

PyLongObject

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

PyTypeObject PyLong_Type

Этот экземпляр PyTypeObject представляет целочисленный тип Python. Это тот же объект, что и int на уровне Python.

int PyLong_Check(PyObject *p)

Возвращает истину, если аргумент является PyLongObject или подтипом PyLongObject.

int PyLong_CheckExact(PyObject *p)

Возвращает истину, если аргумент является PyLongObject, но не подтипом PyLongObject.

PyObject* PyLong_FromLong(long v)
Возвращаемое значение: новая ссылка.

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

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

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. Строка Unicode сначала кодируется в байтовую строку с помощью PyUnicode_EncodeDecimal(), а затем преобразуется с помощью PyLong_FromString().

Устарело с версии 3.3, будет удалено в версии 4.0: Часть старого API Py_UNICODE; переходите на использование PyLong_FromUnicodeObject().

PyObject* PyLong_FromUnicodeObject(PyObject *u, int base)

Преобразует последовательность цифр Unicode в строке u в целочисленное значение Python. Строка Unicode сначала кодируется в байтовую строку с помощью PyUnicode_EncodeDecimal(), а затем преобразуется с помощью PyLong_FromString().

Новое в версии 3.3.

PyObject* PyLong_FromVoidPtr(void *p)
Возвращаемое значение: новая ссылка.

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

long PyLong_AsLong(PyObject *obj)

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

Возбуждает OverflowError, если значение obj выходит за пределы допустимого диапазона для long.

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

long PyLong_AsLongAndOverflow(PyObject *obj, int *overflow)

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

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

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

long long PyLong_AsLongLong(PyObject *obj)

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

Возбуждает OverflowError, если значение obj выходит за пределы допустимого диапазона для long.

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

long long PyLong_AsLongLongAndOverflow(PyObject *obj, int *overflow)

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

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

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

Новое в версии 3.2.

Py_ssize_t PyLong_AsSsize_t(PyObject *pylong)

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

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

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

unsigned long PyLong_AsUnsignedLong(PyObject *pylong)

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

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

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

size_t PyLong_AsSize_t(PyObject *pylong)

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

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

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

unsigned long long PyLong_AsUnsignedLongLong(PyObject *pylong)

Возвращает 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)

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

Если значение obj выходит за пределы допустимого диапазона для unsigned long, возвращается приведение этого значения по модулю ULONG_MAX + 1.

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

unsigned long long PyLong_AsUnsignedLongLongMask(PyObject *obj)

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

Если значение obj выходит за пределы допустимого диапазона для unsigned long long, возвращается приведение этого значения по модулю PY_ULLONG_MAX + 1.

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

double PyLong_AsDouble(PyObject *pylong)

Возвращает C-представление double объекта pylong. 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() для устранения неоднозначности.