Целочисленные объекты¶
Все целые числа реализуются как «длинные» целочисленные объекты произвольного размера.
При ошибке большинство 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
из CPy_ssize_t
, илиNULL
при неудаче.
-
PyObject *
PyLong_FromSize_t
(size_t v)¶ - Return value: New reference. Part of the Stable ABI.
Возвращает новый объект
PyLongObject
из Csize_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()
для разграничения.