Целочисленные объекты¶
Все целые числа реализуются как «длинные» целочисленные объекты произвольного размера.
При ошибке большинство 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()
для устранения неоднозначности.