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