long.md
1> **Источник:** https://python-all.ru/3.1/c-api/long.html2>3> «Документация Python на русском» – неофициальный перевод официальной документации Python: версии от 2.6 до 3.16, полнотекстовый поиск, английский оригинал рядом с переводом. Эта Markdown-версия страницы предназначена для работы с LLM: вставьте её в ChatGPT, Claude или Cursor.45---67# Целочисленные объекты89Все целые числа реализованы как «длинные» целочисленные объекты произвольного размера.1011**`PyLongObject`**1213Этот подтип1415[`PyObject`](https://python-all.ru/3.1/c-api/structures.html#PyObject)1617представляет целочисленный объект Python.1819**[PyTypeObject](https://python-all.ru/3.1/c-api/type.html#PyTypeObject) `PyLong_Type`**2021Этот экземпляр2223[`PyTypeObject`](https://python-all.ru/3.1/c-api/type.html#PyTypeObject)2425представляет целочисленный тип Python. Это тот же объект, что и2627[`int`](https://python-all.ru/3.1/library/functions.html#int)2829на уровне Python.3031**int `PyLong_Check`([PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject) *\*p*)**3233Возвращает истину, если аргумент является3435[`PyLongObject`](https://python-all.ru/3.1/c-api/long.html#PyLongObject)3637или подтипом3839[`PyLongObject`](https://python-all.ru/3.1/c-api/long.html#PyLongObject)4041.4243**int `PyLong_CheckExact`([PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject) *\*p*)**4445Возвращает истину, если аргумент является4647[`PyLongObject`](https://python-all.ru/3.1/c-api/long.html#PyLongObject)4849, но не подтипом5051[`PyLongObject`](https://python-all.ru/3.1/c-api/long.html#PyLongObject)5253.5455**[PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject)\* `PyLong_FromLong`(long *v*)**5657*Возвращаемое значение: новая ссылка.*5859Возвращает новый объект [`PyLongObject`](https://python-all.ru/3.1/c-api/long.html#PyLongObject) из *v* или *NULL* в случае ошибки.6061Текущая реализация хранит массив объектов целых чисел для всех целых чисел между `-5` и `256`. Когда создаётся int в этом диапазоне, фактически возвращается ссылка на существующий объект. Поэтому изменение значения `1` должно быть возможным. Поведение Python в этом случае, вероятно, не определено. :-)6263**[PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject)\* `PyLong_FromUnsignedLong`(unsigned long *v*)**6465*Возвращаемое значение: новая ссылка.*6667Возвращает новый объект [`PyLongObject`](https://python-all.ru/3.1/c-api/long.html#PyLongObject) из C `unsigned long` или *NULL* в случае ошибки.6869**[PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject)\* `PyLong_FromSsize_t`(Py\_ssize\_t *v*)**7071Возвращает новый объект7273[`PyLongObject`](https://python-all.ru/3.1/c-api/long.html#PyLongObject)7475из C7677`Py_ssize_t`7879или8081*NULL*8283в случае ошибки.8485**[PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject)\* `PyLong_FromSize_t`(size\_t *v*)**8687Возвращает новый объект8889[`PyLongObject`](https://python-all.ru/3.1/c-api/long.html#PyLongObject)9091из C9293`size_t`9495или9697*NULL*9899в случае ошибки.100101**[PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject)\* `PyLong_FromLongLong`(PY\_LONG\_LONG *v*)**102103*Возвращаемое значение: новая ссылка.*104105Возвращает новый объект [`PyLongObject`](https://python-all.ru/3.1/c-api/long.html#PyLongObject) из C `long long` или *NULL* в случае ошибки.106107**[PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject)\* `PyLong_FromUnsignedLongLong`(unsigned PY\_LONG\_LONG *v*)**108109*Возвращаемое значение: новая ссылка.*110111Возвращает новый объект [`PyLongObject`](https://python-all.ru/3.1/c-api/long.html#PyLongObject) из C `unsigned long long` или *NULL* в случае ошибки.112113**[PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject)\* `PyLong_FromDouble`(double *v*)**114115*Возвращаемое значение: новая ссылка.*116117Возвращает новый объект [`PyLongObject`](https://python-all.ru/3.1/c-api/long.html#PyLongObject) из целой части *v* или *NULL* в случае ошибки.118119**[PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject)\* `PyLong_FromString`(char *\*str*, char *\*\*pend*, int *base*)**120121*Возвращаемое значение: новая ссылка.*122123Возвращает новый [`PyLongObject`](https://python-all.ru/3.1/c-api/long.html#PyLongObject) на основе строкового значения *str*, которое интерпретируется в соответствии с основанием *base*. Если *pend* не *NULL*, `*pend` будет указывать на первый символ в *str*, следующий за представлением числа. Если *base* равно `0`, основание будет определено по начальным символам *str*: если *str* начинается с `'0x'` или `'0X'`, используется основание 16; если *str* начинается с `'0o'` или `'0O'`, используется основание 8; если *str* начинается с `'0b'` или `'0B'`, используется основание 2; в противном случае используется основание 10. Если *base* не равно `0`, оно должно быть между `2` и `36` включительно. Начальные пробелы игнорируются. Если цифры отсутствуют, вызывается [`ValueError`](https://python-all.ru/3.1/library/exceptions.html#ValueError).124125**[PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject)\* `PyLong_FromUnicode`([Py\_UNICODE](https://python-all.ru/3.1/c-api/unicode.html#Py_UNICODE) *\*u*, Py\_ssize\_t *length*, int *base*)**126127*Возвращаемое значение: новая ссылка.*128129Преобразует последовательность цифр Unicode в целочисленное значение Python. Строка Unicode сначала кодируется в байтовую строку с помощью `PyUnicode_EncodeDecimal()`, а затем преобразуется с помощью [`PyLong_FromString()`](https://python-all.ru/3.1/c-api/long.html#PyLong_FromString).130131**[PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject)\* `PyLong_FromVoidPtr`(void *\*p*)**132133*Возвращаемое значение: новая ссылка.*134135Создает целое число Python из указателя *p*. Значение указателя можно получить из результирующего значения с помощью [`PyLong_AsVoidPtr()`](https://python-all.ru/3.1/c-api/long.html#PyLong_AsVoidPtr).136137**long `PyLong_AsLong`([PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject) *\*pylong*)**138139Возвращает представление содержимого *pylong* в виде C `long`. Если *pylong* больше `LONG_MAX`, возникает исключение [`OverflowError`](https://python-all.ru/3.1/library/exceptions.html#OverflowError), и возвращается -1. Не-long объекты автоматически преобразуются в long, и если при этом возникают исключения, возвращается -1.140141**long `PyLong_AsLongAndOverflow`([PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject) *\*pylong*, int\* *overflow*)**142143Возвращает представление содержимого144145*pylong*146147в виде C148149`long`150151. Если152153*pylong*154155больше156157`LONG_MAX`158159, возвращает -1 и устанавливает160161*\*overflow*162163в 1 (для переполнения) или -1 (для отрицательного переполнения). Если из-за ошибок типа возникает исключение, также возвращается -1.164165**Py\_ssize\_t `PyLong_AsSsize_t`([PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject) *\*pylong*)**166167Возвращает представление содержимого *pylong* в виде C `Py_ssize_t`. Если *pylong* больше `PY_SSIZE_T_MAX`, возникает исключение [`OverflowError`](https://python-all.ru/3.1/library/exceptions.html#OverflowError) и возвращается `-1`.168169**unsigned long `PyLong_AsUnsignedLong`([PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject) *\*pylong*)**170171Возвращает представление содержимого *pylong* в виде C `unsigned long`. Если *pylong* больше `ULONG_MAX`, возникает исключение [`OverflowError`](https://python-all.ru/3.1/library/exceptions.html#OverflowError).172173**size\_t `PyLong_AsSize_t`([PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject) *\*pylong*)**174175Возвращает представление содержимого176177*pylong*178179в виде180181`size_t`182183. Если184185*pylong*186187больше максимального значения для188189`size_t`190191, возникает исключение192193[`OverflowError`](https://python-all.ru/3.1/library/exceptions.html#OverflowError)194195.196197**PY\_LONG\_LONG `PyLong_AsLongLong`([PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject) *\*pylong*)**198199Возвращает C `long long` из Python-целого. Если *pylong* не может быть представлено как `long long`, возникает исключение [`OverflowError`](https://python-all.ru/3.1/library/exceptions.html#OverflowError) и возвращается `-1`.200201**unsigned PY\_LONG\_LONG `PyLong_AsUnsignedLongLong`([PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject) *\*pylong*)**202203Возвращает C `unsigned long long` из Python-целого. Если *pylong* не может быть представлено как `unsigned long long`, возникает исключение [`OverflowError`](https://python-all.ru/3.1/library/exceptions.html#OverflowError) и возвращается `(unsigned long long)-1`.204205Изменено в версии 3.1: Отрицательное значение *pylong* теперь возбуждает [`OverflowError`](https://python-all.ru/3.1/library/exceptions.html#OverflowError), а не [`TypeError`](https://python-all.ru/3.1/library/exceptions.html#TypeError).206207**unsigned long `PyLong_AsUnsignedLongMask`([PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject) *\*io*)**208209Возвращает C210211`unsigned long`212213из Python-целого, без проверки на переполнение.214215**unsigned PY\_LONG\_LONG `PyLong_AsUnsignedLongLongMask`([PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject) *\*io*)**216217Возвращает C218219`unsigned long long`220221из целого числа Python, без проверки на переполнение.222223**double `PyLong_AsDouble`([PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject) *\*pylong*)**224225Возвращает представление содержимого226227*pylong*228229в виде C230231`double`232233. Если234235*pylong*236237не может быть приблизительно представлен как238239`double`240241, возбуждается исключение242243[`OverflowError`](https://python-all.ru/3.1/library/exceptions.html#OverflowError)244245и возвращается246247`-1.0`248249.250251**void\* `PyLong_AsVoidPtr`([PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject) *\*pylong*)**252253Преобразует целое число Python254255*pylong*256257в указатель C258259`void`260261. Если262263*pylong*264265не удаётся преобразовать, возбуждается266267[`OverflowError`](https://python-all.ru/3.1/library/exceptions.html#OverflowError)268269. Гарантированно получить корректный указатель270271`void`272273можно только для значений, созданных с помощью274275[`PyLong_FromVoidPtr()`](https://python-all.ru/3.1/c-api/long.html#PyLong_FromVoidPtr)276277.278