long.md
1> **Источник:** https://python-all.ru/3.0/c-api/long.html2>3> «Документация Python на русском» – неофициальный перевод официальной документации Python: версии от 2.6 до 3.16, полнотекстовый поиск, английский оригинал рядом с переводом. Эта Markdown-версия страницы предназначена для работы с LLM: вставьте её в ChatGPT, Claude или Cursor.45---67# Целочисленные объекты89Все целые числа реализованы как «длинные» целочисленные объекты произвольного размера.1011**\[PyLongObject\]`PyLongObject`**1213Этот подтип1415[`PyObject`](https://python-all.ru/3.0/c-api/structures.html#PyObject)1617представляет целочисленный объект Python.1819**\[PyLong\_Type\][PyTypeObject](https://python-all.ru/3.0/c-api/type.html#PyTypeObject) `PyLong_Type`**2021Этот экземпляр2223[`PyTypeObject`](https://python-all.ru/3.0/c-api/type.html#PyTypeObject)2425представляет целочисленный тип Python. Это тот же объект, что и2627`int`2829.3031**\[PyLong\_Check\]int `PyLong_Check`([PyObject](https://python-all.ru/3.0/c-api/structures.html#PyObject) *\*p*)**3233Возвращает истину, если аргумент является3435[`PyLongObject`](https://python-all.ru/3.0/c-api/long.html#PyLongObject)3637или подтипом3839[`PyLongObject`](https://python-all.ru/3.0/c-api/long.html#PyLongObject)4041.4243**\[PyLong\_CheckExact\]int `PyLong_CheckExact`([PyObject](https://python-all.ru/3.0/c-api/structures.html#PyObject) *\*p*)**4445Возвращает истину, если аргумент является4647[`PyLongObject`](https://python-all.ru/3.0/c-api/long.html#PyLongObject)4849, но не подтипом5051[`PyLongObject`](https://python-all.ru/3.0/c-api/long.html#PyLongObject)5253.5455**\[PyLong\_FromLong\][PyObject](https://python-all.ru/3.0/c-api/structures.html#PyObject)\* `PyLong_FromLong`(long *v*)**5657*Возвращаемое значение: новая ссылка.*5859Возвращает новый объект [`PyLongObject`](https://python-all.ru/3.0/c-api/long.html#PyLongObject) из *v* или *NULL* в случае ошибки.6061Текущая реализация хранит массив объектов целых чисел для всех целых чисел между `-5` и `256`. Когда создаётся int в этом диапазоне, фактически возвращается ссылка на существующий объект. Поэтому изменение значения `1` должно быть возможным. Поведение Python в этом случае, вероятно, не определено. :-)6263**\[PyLong\_FromUnsignedLong\][PyObject](https://python-all.ru/3.0/c-api/structures.html#PyObject)\* `PyLong_FromUnsignedLong`(unsigned long *v*)**6465*Возвращаемое значение: новая ссылка.*6667Возвращает новый объект [`PyLongObject`](https://python-all.ru/3.0/c-api/long.html#PyLongObject) из C `unsigned long` или *NULL* в случае ошибки.6869**\[PyLong\_FromSsize\_t\][PyObject](https://python-all.ru/3.0/c-api/structures.html#PyObject)\* `PyLong_FromSsize_t`(Py\_ssize\_t *v*)**7071Возвращает новый объект7273[`PyLongObject`](https://python-all.ru/3.0/c-api/long.html#PyLongObject)7475из C7677`Py_ssize_t`7879или8081*NULL*8283в случае ошибки.8485**\[PyLong\_FromSize\_t\][PyObject](https://python-all.ru/3.0/c-api/structures.html#PyObject)\* `PyLong_FromSize_t`(size\_t *v*)**8687Возвращает новый объект8889[`PyLongObject`](https://python-all.ru/3.0/c-api/long.html#PyLongObject)9091из C9293`size_t`9495или9697*NULL*9899в случае ошибки.100101**\[PyLong\_FromLongLong\][PyObject](https://python-all.ru/3.0/c-api/structures.html#PyObject)\* `PyLong_FromLongLong`(PY\_LONG\_LONG *v*)**102103*Возвращаемое значение: новая ссылка.*104105Возвращает новый объект [`PyLongObject`](https://python-all.ru/3.0/c-api/long.html#PyLongObject) из C `long long` или *NULL* в случае ошибки.106107**\[PyLong\_FromUnsignedLongLong\][PyObject](https://python-all.ru/3.0/c-api/structures.html#PyObject)\* `PyLong_FromUnsignedLongLong`(unsigned PY\_LONG\_LONG *v*)**108109*Возвращаемое значение: новая ссылка.*110111Возвращает новый объект [`PyLongObject`](https://python-all.ru/3.0/c-api/long.html#PyLongObject) из C `unsigned long long` или *NULL* в случае ошибки.112113**\[PyLong\_FromDouble\][PyObject](https://python-all.ru/3.0/c-api/structures.html#PyObject)\* `PyLong_FromDouble`(double *v*)**114115*Возвращаемое значение: новая ссылка.*116117Возвращает новый объект [`PyLongObject`](https://python-all.ru/3.0/c-api/long.html#PyLongObject) из целой части *v* или *NULL* в случае ошибки.118119**\[PyLong\_FromString\][PyObject](https://python-all.ru/3.0/c-api/structures.html#PyObject)\* `PyLong_FromString`(char *\*str*, char *\*\*pend*, int *base*)**120121*Возвращаемое значение: новая ссылка.*122123Возвращает новый [`PyLongObject`](https://python-all.ru/3.0/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.0/library/exceptions.html#exceptions.ValueError).124125**\[PyLong\_FromUnicode\][PyObject](https://python-all.ru/3.0/c-api/structures.html#PyObject)\* `PyLong_FromUnicode`([Py\_UNICODE](https://python-all.ru/3.0/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.0/c-api/long.html#PyLong_FromString).130131**\[PyLong\_FromVoidPtr\][PyObject](https://python-all.ru/3.0/c-api/structures.html#PyObject)\* `PyLong_FromVoidPtr`(void *\*p*)**132133*Возвращаемое значение: новая ссылка.*134135Создаёт целое число Python из указателя *p*. Значение указателя можно получить из результирующего числа с помощью [`PyLong_AsVoidPtr`](https://python-all.ru/3.0/c-api/long.html#PyLong_AsVoidPtr).136137**\[PyLong\_AsLong\]long `PyLong_AsLong`([PyObject](https://python-all.ru/3.0/c-api/structures.html#PyObject) *\*pylong*)**138139Возвращает представление содержимого *pylong* в виде C `long`. Если *pylong* больше `LONG_MAX`, возникает исключение [`OverflowError`](https://python-all.ru/3.0/library/exceptions.html#exceptions.OverflowError), и возвращается -1. Не-long объекты автоматически преобразуются в long, и если при этом возникают исключения, возвращается -1.140141**\[PyLong\_AsLongAndOverflow\]long `PyLong_AsLongAndOverflow`([PyObject](https://python-all.ru/3.0/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**\[PyLong\_AsSsize\_t\]Py\_ssize\_t `PyLong_AsSsize_t`([PyObject](https://python-all.ru/3.0/c-api/structures.html#PyObject) *\*pylong*)**166167Возвращает `Py_ssize_t` – представление содержимого *pylong* на языке C. Если *pylong* больше `PY_SSIZE_T_MAX`, возбуждается исключение [`OverflowError`](https://python-all.ru/3.0/library/exceptions.html#exceptions.OverflowError) и возвращается `-1`.168169**\[PyLong\_AsUnsignedLong\]unsigned long `PyLong_AsUnsignedLong`([PyObject](https://python-all.ru/3.0/c-api/structures.html#PyObject) *\*pylong*)**170171Возвращает представление содержимого *pylong* в виде C `unsigned long`. Если *pylong* больше `ULONG_MAX`, возникает исключение [`OverflowError`](https://python-all.ru/3.0/library/exceptions.html#exceptions.OverflowError).172173**Py\_ssize\_t `PyLong_AsSsize_t`([PyObject](https://python-all.ru/3.0/c-api/structures.html#PyObject) *\*pylong*)**174175Возвращает `Py_ssize_t` – представление содержимого *pylong*. Если *pylong* больше `PY_SSIZE_T_MAX`, возбуждается исключение [`OverflowError`](https://python-all.ru/3.0/library/exceptions.html#exceptions.OverflowError).176177**\[PyLong\_AsSize\_t\]size\_t `PyLong_AsSize_t`([PyObject](https://python-all.ru/3.0/c-api/structures.html#PyObject) *\*pylong*)**178179Возвращает представление содержимого180181*pylong*182183в виде184185`size_t`186187. Если188189*pylong*190191больше максимального значения для192193`size_t`194195, возникает исключение196197[`OverflowError`](https://python-all.ru/3.0/library/exceptions.html#exceptions.OverflowError)198199.200201**\[PyLong\_AsLongLong\]PY\_LONG\_LONG `PyLong_AsLongLong`([PyObject](https://python-all.ru/3.0/c-api/structures.html#PyObject) *\*pylong*)**202203Возвращает C-тип204205`long long`206207из целого Python. Если208209*pylong*210211нельзя представить как212213`long long`214215, будет возбуждено исключение216217[`OverflowError`](https://python-all.ru/3.0/library/exceptions.html#exceptions.OverflowError)218219.220221**\[PyLong\_AsUnsignedLongLong\]unsigned PY\_LONG\_LONG `PyLong_AsUnsignedLongLong`([PyObject](https://python-all.ru/3.0/c-api/structures.html#PyObject) *\*pylong*)**222223Возвращает C-тип224225`unsigned long long`226227из целого Python. Если228229*pylong*230231нельзя представить как232233`unsigned long long`234235, то для положительного значения будет возбуждено исключение236237[`OverflowError`](https://python-all.ru/3.0/library/exceptions.html#exceptions.OverflowError)238239, а для отрицательного –240241[`TypeError`](https://python-all.ru/3.0/library/exceptions.html#exceptions.TypeError)242243.244245**\[PyLong\_AsUnsignedLongMask\]unsigned long `PyLong_AsUnsignedLongMask`([PyObject](https://python-all.ru/3.0/c-api/structures.html#PyObject) *\*io*)**246247Возвращает C248249`unsigned long`250251из Python-целого, без проверки на переполнение.252253**\[PyLong\_AsUnsignedLongLongMask\]unsigned PY\_LONG\_LONG `PyLong_AsUnsignedLongLongMask`([PyObject](https://python-all.ru/3.0/c-api/structures.html#PyObject) *\*io*)**254255Возвращает C256257`unsigned long long`258259из целого числа Python, без проверки на переполнение.260261**\[PyLong\_AsDouble\]double `PyLong_AsDouble`([PyObject](https://python-all.ru/3.0/c-api/structures.html#PyObject) *\*pylong*)**262263Возвращает представление содержимого264265*pylong*266267в виде C268269`double`270271. Если272273*pylong*274275не может быть приблизительно представлен как276277`double`278279, возбуждается исключение280281[`OverflowError`](https://python-all.ru/3.0/library/exceptions.html#exceptions.OverflowError)282283и возвращается284285`-1.0`286287.288289**\[PyLong\_AsVoidPtr\]void\* `PyLong_AsVoidPtr`([PyObject](https://python-all.ru/3.0/c-api/structures.html#PyObject) *\*pylong*)**290291Преобразует целое число Python292293*pylong*294295в указатель C296297`void`298299. Если300301*pylong*302303не может быть преобразовано, будет возбуждено исключение304305[`OverflowError`](https://python-all.ru/3.0/library/exceptions.html#exceptions.OverflowError)306307. Гарантируется, что полученный указатель308309`void`310311будет пригоден для использования только для значений, созданных с помощью312313[`PyLong_FromVoidPtr`](https://python-all.ru/3.0/c-api/long.html#PyLong_FromVoidPtr)314315.316