Целочисленные объекты¶
Все целые числа реализуются как «длинные» целочисленные объекты произвольного размера.
При ошибке большинство PyLong_As* API возвращает (return type)-1 которые нельзя
отличить от числа. Используйте PyErr_Occurred() для устранения неоднозначности.
-
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)¶ - Return value: New reference.
Возвращает новый объект
PyLongObjectиз v илиNULLпри сбое.Текущая реализация сохраняет массив целочисленных объектов для всех целых чисел между
-5и256, при создании int в этом диапазоне вы фактически просто получаете ссылку на существующий объект. Так что должна быть возможность изменить значение в1. Подозреваю, что поведение Python в данном случае не определено.: -)
-
PyObject*
PyLong_FromUnsignedLong(unsigned long v)¶ - Return value: New reference.
Возвращает новый объект
PyLongObjectизunsigned longC илиNULLпри сбое.
-
PyObject*
PyLong_FromSsize_t(Py_ssize_t v)¶ - Return value: New reference.
Возвращает новый объект
PyLongObjectизPy_ssize_tC илиNULLпри сбое.
-
PyObject*
PyLong_FromSize_t(size_t v)¶ - Return value: New reference.
Возвращает новый объект
PyLongObjectизsize_tC илиNULLпри сбое.
-
PyObject*
PyLong_FromLongLong(long long v)¶ - Return value: New reference.
Возвращает новый объект
PyLongObjectизlong longC илиNULLпри сбое.
-
PyObject*
PyLong_FromUnsignedLongLong(unsigned long long v)¶ - Return value: New reference.
Возвращает новый объект
PyLongObjectизunsigned long longC илиNULLпри сбое.
-
PyObject*
PyLong_FromDouble(double v)¶ - Return value: New reference.
Возвращает новый объект
PyLongObjectиз целочисленной части v илиNULLпри сбое.
-
PyObject*
PyLong_FromString(const char *str, char **pend, int base)¶ - Return value: New reference.
Возвращает новый
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)¶ - Return value: New reference.
Преобразование последовательности цифр Unicode в целочисленное значение Python.
Deprecated since version 3.3, will be removed in version 3.10: Часть старого стиля
Py_UNICODEAPI; выполнить миграцию с использованиемPyLong_FromUnicodeObject().
-
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.
Создать целое число 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__()устарело.
-
long long
PyLong_AsLongLong(PyObject *obj)¶ Возвращает C
long longпредставление obj. Если 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)¶ Возвращает C
long longпредставление obj. Если obj не является сущностьюPyLongObject, сначала вызывается метод__index__()или__int__()(если присутствует), чтобы преобразовать его вPyLongObject.Если значение obj больше
PY_LLONG_MAXили меньшеPY_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)¶ Возвращает 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)¶ Возвращает C
unsigned longпредставление obj. Если 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)¶ Возвращает C
unsigned long longпредставление obj. Если obj не является сущностьюPyLongObject, сначала вызывается метод__index__()или__int__()(если присутствует), чтобы преобразовать его вPyLongObject.Если значение obj выходит за пределы диапазона для
unsigned long long, возвращает уменьшенное значение по модулюPY_ULLONG_MAX + 1.Возвращает
(unsigned long long)-1при ошибке. ИспользуйтеPyErr_Occurred()для устранения неоднозначности.Изменено в версии 3.8: Используйте
__index__(), если доступно.Не рекомендуется, начиная с версии 3.8: Использование
__int__()устарело.
-
double
PyLong_AsDouble(PyObject *pylong)¶ Возвращает C
doubleпредставление pylong. pylong должен быть сущностьюPyLongObject.Поднимается
OverflowError, если значение pylong выходит за пределы допустимого диапазона дляdouble.Возвращает
-1.0при ошибке. ИспользуйтеPyErr_Occurred()для устранения неоднозначности.
-
void*
PyLong_AsVoidPtr(PyObject *pylong)¶ Преобразовать целочисленный pylong Python в указатель C
void. Если pylong не может быть преобразован, будет поднятоOverflowError. Это гарантирует только создание пригодного для использования указателяvoidдля значения, созданных с помощьюPyLong_FromVoidPtr().Возвращает
NULLпри ошибке. ИспользуйтеPyErr_Occurred()для устранения неоднозначности.
