Целые числа (Integer Objects)
Все целые числа реализуются как объекты «long» произвольного размера.
В случае ошибки большинство PyLong_As* API возвращают (return type)-1, которые нельзя отличить от числа. Используйте PyErr_Occurred() для разграничения.
-
type PyLongObject -
Часть Ограниченного API (как неявный структуру).
Этот подтип
PyObjectпредставляет собой объект целого числа Python.
-
PyTypeObject PyLong_Type -
Часть Стабильного 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) -
Значение возврата: Новая ссылка. Часть Стабильного ABI.
Возвращает новый объект
PyLongObjectиз v илиNULLпри ошибке.Текущая реализация хранит массив целых чисел для всех целых чисел в диапазоне от
-5до256. Когда вы создаете целое число в этом диапазоне, вы фактически просто получаете ссылку на существующий объект.
-
PyObject *PyLong_FromUnsignedLong(unsigned long v) -
Значение возврата: Новая ссылка. Часть Стабильного ABI.
Возвращает новый объект
PyLongObjectиз C unsigned long илиNULLпри ошибке.
-
PyObject *PyLong_FromSsize_t(Py_ssize_t v) -
Значение возврата: Новая ссылка. Часть Стабильного ABI.
Возвращает новый объект
PyLongObjectиз CPy_ssize_tилиNULLпри ошибке.
-
PyObject *PyLong_FromSize_t(size_t v) -
Значение возврата: Новая ссылка. Часть Стабильного ABI.
Возвращает новый объект
PyLongObjectиз Csize_t, илиNULLпри ошибке.
-
PyObject *PyLong_FromLongLong(long long v) -
Значение возврата: Новая ссылка. Часть Стабильного ABI.
Возвращает новый объект
PyLongObjectиз C long long илиNULLпри ошибке.
-
PyObject *PyLong_FromUnsignedLongLong(unsigned long long v) -
Значение возврата: Новая ссылка. Часть Стабильного ABI.
Возвращает новый объект
PyLongObjectиз C unsigned long long илиNULLпри ошибке.
-
PyObject *PyLong_FromDouble(double v) -
Значение возврата: Новая ссылка. Часть Стабильного ABI.
Возвращает новый объект
PyLongObjectиз целой части v илиNULLпри ошибке.
-
PyObject *PyLong_FromString(const char *str, char **pend, int base) -
Значение возврата: Новая ссылка. Часть Стабильного ABI.
Возвращает новый
PyLongObjectна основе строкового значения в str, интерпретируемого по основанию в base. Если pend неNULL, *pend будет указывать на первый символ в str, следующий за представлением числа. Если base равно0, str интерпретируется с использованием определения литералов целых чисел; в этом случае ведущие нули в не-нулевом десятичном числе вызывают исключениеValueError. Если base не равно0, оно должно быть между2и36, включительно. Ведущие пробелы и одиночные подчеркивания после спецификатора основания и между цифрами игнорируются. Если нет цифр, будет вызвано исключениеValueError.См. также
Методы Python
int.to_bytes()иint.from_bytes()для преобразованияPyLongObjectв/из массив байтов в основании256. Вы можете вызвать их из C, используяPyObject_CallMethod().
-
PyObject *PyLong_FromUnicodeObject(PyObject *u, int base) -
Значение возврата: Новая ссылка.
Преобразовать последовательность Unicode-цифр в строке u в значение целого числа Python.
Новое в версии 3.3.
-
PyObject *PyLong_FromVoidPtr(void *p) -
Значение возврата: Новая ссылка. Часть Стабильного ABI.
Создает целое число Python из указателя p. Значение указателя можно получить из результата, используя
PyLong_AsVoidPtr().
-
long PyLong_AsLong(PyObject *obj) -
Часть Стабильного ABI.
Возвращает C long представление obj. Если obj не является экземпляром
PyLongObject, сначала вызывается его метод__index__()(если он присутствует) для его преобразования вPyLongObject.Вызывает
OverflowError, если значение obj выходит за пределы диапазона для long.Возвращает
-1при ошибке. ИспользуйтеPyErr_Occurred()для разграничения.Изменено в версии 3.8: Используйте
__index__(), если доступно.Изменено в версии 3.10: Эта функция больше не будет использовать
__int__().
-
long PyLong_AsLongAndOverflow(PyObject *obj, int *overflow) -
Часть Стабильной ABI.
Возвращает C long представление obj. Если obj не является экземпляром
PyLongObject, сначала вызывается его метод__index__()(если он присутствует), чтобы преобразовать его в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) -
Часть Стабильной ABI.
Возвращает C long long представление obj. Если 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) -
Часть Стабильной ABI.
Возвращает C long long представление obj. Если obj не является экземпляром
PyLongObject, сначала вызывается его метод__index__()(если он присутствует), чтобы преобразовать его в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) -
Часть Стабильной ABI.
Возвращает C
Py_ssize_tпредставление pylong. pylong должен быть экземпляромPyLongObject.Возвышает
OverflowError, если значение pylong выходит за пределы диапазона дляPy_ssize_t.Возвращает
-1при ошибке. ИспользуйтеPyErr_Occurred()для уточнения.
-
unsigned long PyLong_AsUnsignedLong(PyObject *pylong) -
Часть Стабильной ABI.
Возвращает C unsigned long представление pylong. pylong должен быть экземпляром
PyLongObject.Возвышает
OverflowError, если значение pylong выходит за пределы диапазона для unsigned long.Возвращает
(unsigned long)-1при ошибке. ИспользуйтеPyErr_Occurred()для уточнения.
-
size_t PyLong_AsSize_t(PyObject *pylong) -
Часть Стабильной ABI.
Возвращает C
size_tпредставление pylong. pylong должен быть экземпляромPyLongObject.Возвышает
OverflowError, если значение pylong выходит за пределы диапазона дляsize_t.Возвращает
(size_t)-1при ошибке. ИспользуйтеPyErr_Occurred()для уточнения.
-
unsigned long long PyLong_AsUnsignedLongLong(PyObject *pylong) -
Часть Стабильной ABI.
Возвращает 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) -
Часть Стабильной 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) -
Часть Стабильной 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) -
Часть Стабильной ABI.
Возвращает представление целого числа pylong в виде C double. pylong должен быть экземпляром
PyLongObject.Вызывает
OverflowError, если значение pylong выходит за пределы диапазона для double.Возвращает
-1.0при ошибке. ИспользуйтеPyErr_Occurred()для различения.
-
void *PyLong_AsVoidPtr(PyObject *pylong) -
Часть Стабильной ABI.
Преобразует целое число Python pylong в указатель C void. Если pylong не может быть преобразован, будет вызвано исключение
OverflowError. Это гарантирует получение полезного указателя void только для значений, созданных с помощьюPyLong_FromVoidPtr().Возвращает
NULLпри ошибке. ИспользуйтеPyErr_Occurred()для различения.
© 2001–2023 Python Software Foundation
Licensed under the PSF License.
https://docs.python.org/3.11/c-api/long.html