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

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

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

type PyLongObject
Part of the Ограниченный API (as an opaque struct).

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

PyTypeObject PyLong_Type
Part of the Стабильный ABI.

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

int PyLong_Check(PyObject *p)

Возвращает значение true, если его аргумент имеет значение PyLongObject или подтип PyLongObject. Эта функция всегда выполняется успешно.

int PyLong_CheckExact(PyObject *p)

Возвращает значение true, если его аргумент равен PyLongObject, но не является подтипом PyLongObject. Эта функция всегда выполняется успешно.

PyObject *PyLong_FromLong(long v)
Возвращаемое значение: Новая ссылка. Part of the Стабильный ABI.

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

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

PyObject *PyLong_FromUnsignedLong(unsigned long v)
Возвращаемое значение: Новая ссылка. Part of the Стабильный ABI.

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

PyObject *PyLong_FromSsize_t(Py_ssize_t v)
Возвращаемое значение: Новая ссылка. Part of the Стабильный ABI.

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

PyObject *PyLong_FromSize_t(size_t v)
Возвращаемое значение: Новая ссылка. Part of the Стабильный ABI.

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

PyObject *PyLong_FromLongLong(long long v)
Возвращаемое значение: Новая ссылка. Part of the Стабильный ABI.

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

PyObject *PyLong_FromUnsignedLongLong(unsigned long long v)
Возвращаемое значение: Новая ссылка. Part of the Стабильный ABI.

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

PyObject *PyLong_FromDouble(double v)
Возвращаемое значение: Новая ссылка. Part of the Стабильный ABI.

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

PyObject *PyLong_FromString(const char *str, char **pend, int base)
Возвращаемое значение: Новая ссылка. Part of the Стабильный ABI.

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

См.также

Методы Python int.to_bytes() и int.from_bytes() преобразуют a PyLongObject в/из массива байтов в базе данных 256. Вы можете вызвать их из C, используя PyObject_CallMethod().

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

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

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

PyObject *PyLong_FromVoidPtr(void *p)
Возвращаемое значение: Новая ссылка. Part of the Стабильный ABI.

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

long PyLong_AsLong(PyObject *obj)
Part of the Стабильный ABI.

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

Увеличьте значение OverflowError, если значение obj выходит за пределы диапазона для a long.

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

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

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

long PyLong_AsLongAndOverflow(PyObject *obj, int *overflow)
Part of the Стабильный ABI.

Возвращает C long представление obj. Если obj не является экземпляром PyLongObject, сначала вызовите его метод __index__() (если он присутствует), чтобы преобразовать его в a 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)
Part of the Стабильный ABI.

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

Увеличьте значение OverflowError, если значение obj выходит за пределы диапазона для a long long.

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

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

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

long long PyLong_AsLongLongAndOverflow(PyObject *obj, int *overflow)
Part of the Стабильный ABI.

Возвращает C long long представление obj. Если obj не является экземпляром PyLongObject, сначала вызовите его метод __index__() (если он присутствует), чтобы преобразовать его в a 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)
Part of the Стабильный ABI.

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

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

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

unsigned long PyLong_AsUnsignedLong(PyObject *pylong)
Part of the Стабильный ABI.

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

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

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

size_t PyLong_AsSize_t(PyObject *pylong)
Part of the Стабильный ABI.

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

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

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

unsigned long long PyLong_AsUnsignedLongLong(PyObject *pylong)
Part of the Стабильный ABI.

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

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

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

Изменено в версии 3.1: Отрицательный столбец теперь вызывает OverflowError, а не TypeError.

unsigned long PyLong_AsUnsignedLongMask(PyObject *obj)
Part of the Стабильный ABI.

Возвращает C unsigned long представление obj. Если obj не является экземпляром PyLongObject, сначала вызовите его метод __index__() (если он присутствует), чтобы преобразовать его в a 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 Стабильный ABI.

Возвращает C unsigned long long представление obj. Если obj не является экземпляром PyLongObject, сначала вызовите его метод __index__() (если он присутствует), чтобы преобразовать его в a 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 Стабильный ABI.

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

Увеличьте значение OverflowError, если значение pylong выходит за пределы диапазона для a double.

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

void *PyLong_AsVoidPtr(PyObject *pylong)
Part of the Стабильный ABI.

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

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

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