Целочисленные объекты¶Integer Objects
Все целые числа реализованы как «длинные» целочисленные объекты произвольного размера.
При ошибке большинство API PyLong_As* возвращают (return type)-1, который невозможно отличить от числа. Используйте PyErr_Occurred() для устранения неоднозначности.
-
PyTypeObject
PyLong_Type¶ Этот экземпляр
PyTypeObjectпредставляет целочисленный тип Python. Это тот же объект, что иintна уровне Python.
-
int
PyLong_Check(PyObject *p)¶ Возвращает истину, если аргумент является
PyLongObjectили подтипомPyLongObject.
-
int
PyLong_CheckExact(PyObject *p)¶ Возвращает истину, если аргумент является
PyLongObject, но не подтипомPyLongObject.
-
PyObject*
PyLong_FromLong(long v)¶ - Возвращаемое значение: новая ссылка.
Возвращает новый объект
PyLongObjectиз v илиNULLпри ошибке.Текущая реализация хранит массив объектов целых чисел для всех целых чисел между
-5и256. Когда создаётся int в этом диапазоне, фактически возвращается ссылка на существующий объект. Поэтому изменение значения1должно быть возможным. Поведение Python в этом случае, вероятно, не определено. :-)
-
PyObject*
PyLong_FromUnsignedLong(unsigned long v)¶ - Возвращаемое значение: новая ссылка.
Возвращает новый объект
PyLongObjectиз Cunsigned longилиNULLпри ошибке.
-
PyObject*
PyLong_FromSsize_t(Py_ssize_t v)¶ - Возвращаемое значение: новая ссылка.
Возвращает новый объект
PyLongObjectиз CPy_ssize_tилиNULLпри ошибке.
-
PyObject*
PyLong_FromSize_t(size_t v)¶ - Возвращаемое значение: новая ссылка.
Возвращает новый объект
PyLongObjectиз Csize_tилиNULLпри ошибке.
-
PyObject*
PyLong_FromLongLong(long long v)¶ - Возвращаемое значение: новая ссылка.
Возвращает новый объект
PyLongObjectиз Clong longилиNULLпри ошибке.
-
PyObject*
PyLong_FromUnsignedLongLong(unsigned long long v)¶ - Возвращаемое значение: новая ссылка.
Возвращает новый объект
PyLongObjectиз Cunsigned long long, илиNULLпри ошибке.
-
PyObject*
PyLong_FromDouble(double v)¶ - Возвращаемое значение: новая ссылка.
Возвращает новый объект
PyLongObjectиз целой части v илиNULLв случае ошибки.
-
PyObject*
PyLong_FromString(const char *str, char **pend, int base)¶ - Возвращаемое значение: новая ссылка.
Возвращает новый
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)¶ - Возвращаемое значение: новая ссылка.
Преобразует последовательность цифр Unicode в целочисленное значение Python. Строка Unicode сначала кодируется в байтовую строку с помощью
PyUnicode_EncodeDecimal(), а затем преобразуется с помощьюPyLong_FromString().Устарело с версии 3.3, будет удалено в версии 4.0: Часть старого API
Py_UNICODE; переходите на использованиеPyLong_FromUnicodeObject().
-
PyObject*
PyLong_FromUnicodeObject(PyObject *u, int base)¶ - Возвращаемое значение: новая ссылка.
Преобразует последовательность цифр Unicode в строке u в целочисленное значение Python. Строка Unicode сначала кодируется в байтовую строку с помощью
PyUnicode_EncodeDecimal(), а затем преобразуется с помощьюPyLong_FromString().Новое в версии 3.3.
-
PyObject*
PyLong_FromVoidPtr(void *p)¶ - Возвращаемое значение: новая ссылка.
Создаёт целое число Python из указателя p. Значение указателя можно извлечь из полученного значения с помощью
PyLong_AsVoidPtr().
-
long
PyLong_AsLong(PyObject *obj)¶ Возвращает C-представление
longобъекта obj. Если obj не является экземпляромPyLongObject, сначала вызывается его метод__int__()(если он есть), чтобы преобразовать его вPyLongObject.Возбуждает
OverflowError, если значение obj выходит за пределы допустимого диапазона дляlong.При ошибке возвращает
-1. ИспользуйтеPyErr_Occurred()для разрешения неоднозначности.
-
long
PyLong_AsLongAndOverflow(PyObject *obj, int *overflow)¶ Возвращает C-представление
longобъекта obj. Если obj не является экземпляромPyLongObject, сначала вызывается его метод__int__()(если он есть), чтобы преобразовать его вPyLongObject.Если значение obj больше
LONG_MAXили меньшеLONG_MIN, установите *overflow в1или-1соответственно и верните-1; в противном случае установите *overflow в0. Если возникает любое другое исключение, установите *overflow в0и верните-1как обычно.При ошибке возвращает
-1. ИспользуйтеPyErr_Occurred()для разрешения неоднозначности.
-
long long
PyLong_AsLongLong(PyObject *obj)¶ Возвращает C-представление
long longобъекта obj. Если obj не является экземпляромPyLongObject, сначала вызывается его метод__int__()(если он есть), чтобы преобразовать его вPyLongObject.Возбуждает
OverflowError, если значение obj выходит за пределы допустимого диапазона дляlong long.При ошибке возвращает
-1. ИспользуйтеPyErr_Occurred()для разрешения неоднозначности.
-
long long
PyLong_AsLongLongAndOverflow(PyObject *obj, int *overflow)¶ Возвращает C-представление
long longобъекта obj. Если obj не является экземпляромPyLongObject, сначала вызывается его метод__int__()(если он есть), чтобы преобразовать его вPyLongObject.Если значение obj больше
PY_LLONG_MAXили меньшеPY_LLONG_MIN, устанавливает *overflow в1или-1соответственно и возвращает-1; в противном случае устанавливает *overflow в0. Если возникает любое другое исключение, устанавливает *overflow в0и возвращает-1как обычно.При ошибке возвращает
-1. ИспользуйтеPyErr_Occurred()для разрешения неоднозначности.Новое в версии 3.2.
-
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)¶ Возвращает представление
unsigned longв C для obj. Если obj не является экземпляромPyLongObject, сначала вызывается его метод__int__()(если он есть) для преобразования вPyLongObject.Если значение obj выходит за пределы допустимого диапазона для
unsigned long, возвращается приведение этого значения по модулюULONG_MAX + 1.При ошибке возвращает
(unsigned long)-1. ИспользуйтеPyErr_Occurred()для разрешения неоднозначности.
-
unsigned long long
PyLong_AsUnsignedLongLongMask(PyObject *obj)¶ Возвращает представление
unsigned long longв C для obj. Если obj не является экземпляромPyLongObject, сначала вызывается его метод__int__()(если он есть) для преобразования вPyLongObject.Если значение obj выходит за пределы допустимого диапазона для
unsigned long long, возвращается приведение этого значения по модулюPY_ULLONG_MAX + 1.При ошибке возвращает
(unsigned long long)-1. ИспользуйтеPyErr_Occurred()для разрешения неоднозначности.
-
double
PyLong_AsDouble(PyObject *pylong)¶ Возвращает C-представление
doubleобъекта pylong. pylong должен быть экземпляромPyLongObject.Вызывает
OverflowError, если значение pylong выходит за пределы диапазона дляdouble.При ошибке возвращает
-1.0. ИспользуйтеPyErr_Occurred()для разрешения неоднозначности.
-
void*
PyLong_AsVoidPtr(PyObject *pylong)¶ Преобразует целое число Python pylong в C-указатель
void. Если pylong не удаётся преобразовать, возбуждаетсяOverflowError. Гарантированно получается пригодный для использования указательvoidтолько для значений, созданных с помощьюPyLong_FromVoidPtr().При ошибке возвращает
NULL. ИспользуйтеPyErr_Occurred()для разрешения неоднозначности.