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

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

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

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(PY_LONG_LONG v)
Возвращаемое значение: новая ссылка.

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

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

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

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

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

PyObject* PyLong_FromString(char *str, char **pend, int base)
Возвращаемое значение: новая ссылка.

Return a new PyLongObject based on the string value in str, which is interpreted according to the radix in base. If pend is non-NULL, *pend will point to the first character in str which follows the representation of the number. If base is 0, the radix will be determined based on the leading characters of str: if str starts with '0x' or '0X', radix 16 will be used; if str starts with '0o' or '0O', radix 8 will be used; if str starts with '0b' or '0B', radix 2 will be used; otherwise radix 10 will be used. If base is not 0, it must be between 2 and 36, inclusive. Leading spaces are ignored. If there are no digits, ValueError will be raised.

PyObject* PyLong_FromUnicode(Py_UNICODE *u, Py_ssize_t length, int base)
Возвращаемое значение: новая ссылка.

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

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

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

long PyLong_AsLong(PyObject *obj)

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

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

long PyLong_AsLongAndOverflow(PyObject *obj, int *overflow)

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

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

PY_LONG_LONG PyLong_AsLongLong(PyObject *obj)

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

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

PY_LONG_LONG PyLong_AsLongLongAndOverflow(PyObject *obj, int *overflow)

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

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

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

Py_ssize_t PyLong_AsSsize_t(PyObject *pylong)

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

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

unsigned long PyLong_AsUnsignedLong(PyObject *pylong)

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

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

size_t PyLong_AsSize_t(PyObject *pylong)

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

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

unsigned PY_LONG_LONG PyLong_AsUnsignedLongLong(PyObject *pylong)

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

Возбуждает OverflowError, если значение pylong выходит за пределы диапазона unsigned PY_LONG_LONG.

Изменено в версии 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.

unsigned PY_LONG_LONG PyLong_AsUnsignedLongLongMask(PyObject *obj)

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

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

double PyLong_AsDouble(PyObject *pylong)

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

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

void* PyLong_AsVoidPtr(PyObject *pylong)

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