> **Источник:** https://python-all.ru/2.6/c-api/long.html
>
> «Документация Python на русском» – неофициальный перевод официальной документации Python: версии от 2.6 до 3.16, полнотекстовый поиск, английский оригинал рядом с переводом. Эта Markdown-версия страницы предназначена для работы с LLM: вставьте её в ChatGPT, Claude или Cursor.

---

# Объекты длинных целых чисел

**`PyLongObject`**

Этот подтип

[`PyObject`](https://python-all.ru/2.6/c-api/structures.html#PyObject)

представляет длинное целое Python.

**[PyTypeObject](https://python-all.ru/2.6/c-api/type.html#PyTypeObject) `PyLong_Type`**

Этот экземпляр [`PyTypeObject`](https://python-all.ru/2.6/c-api/type.html#PyTypeObject) представляет тип длинного целого Python. Это тот же объект, что и `long` и `types.LongType`.

**int `PyLong_Check`([PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject) *\*p*)**

Возвращает истину, если аргумент является [`PyLongObject`](https://python-all.ru/2.6/c-api/long.html#PyLongObject) или подтипом [`PyLongObject`](https://python-all.ru/2.6/c-api/long.html#PyLongObject).

Изменено в версии 2.2: Теперь допускаются подтипы.

**int `PyLong_CheckExact`([PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject) *\*p*)**

Возвращает истину, если аргумент является [`PyLongObject`](https://python-all.ru/2.6/c-api/long.html#PyLongObject), но не подтипом [`PyLongObject`](https://python-all.ru/2.6/c-api/long.html#PyLongObject).

Новое в версии 2.2.

**[PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject)\* `PyLong_FromLong`(long *v*)**

*Возвращаемое значение: новая ссылка.*

Возвращает новый объект [`PyLongObject`](https://python-all.ru/2.6/c-api/long.html#PyLongObject) из *v* или *NULL* в случае ошибки.

**[PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject)\* `PyLong_FromUnsignedLong`(unsigned long *v*)**

*Возвращаемое значение: новая ссылка.*

Возвращает новый объект [`PyLongObject`](https://python-all.ru/2.6/c-api/long.html#PyLongObject) из C `unsigned long` или *NULL* в случае ошибки.

**[PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject)\* `PyLong_FromSsize_t`(Py\_ssize\_t *v*)**

Возвращает новый объект [`PyLongObject`](https://python-all.ru/2.6/c-api/long.html#PyLongObject) из C `Py_ssize_t` или *NULL* в случае ошибки.

Новое в версии 2.6.

**[PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject)\* `PyLong_FromSize_t`(size\_t *v*)**

Возвращает новый объект [`PyLongObject`](https://python-all.ru/2.6/c-api/long.html#PyLongObject) из C `size_t` или *NULL* в случае ошибки.

Новое в версии 2.6.

**[PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject)\* `PyLong_FromLongLong`(PY\_LONG\_LONG *v*)**

*Возвращаемое значение: новая ссылка.*

Возвращает новый объект [`PyLongObject`](https://python-all.ru/2.6/c-api/long.html#PyLongObject) из C `long long` или *NULL* в случае ошибки.

**[PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject)\* `PyLong_FromUnsignedLongLong`(unsigned PY\_LONG\_LONG *v*)**

*Возвращаемое значение: новая ссылка.*

Возвращает новый объект [`PyLongObject`](https://python-all.ru/2.6/c-api/long.html#PyLongObject) из C `unsigned long long` или *NULL* в случае ошибки.

**[PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject)\* `PyLong_FromDouble`(double *v*)**

*Возвращаемое значение: новая ссылка.*

Возвращает новый объект [`PyLongObject`](https://python-all.ru/2.6/c-api/long.html#PyLongObject) из целой части *v* или *NULL* в случае ошибки.

**[PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject)\* `PyLong_FromString`(char *\*str*, char *\*\*pend*, int *base*)**

*Возвращаемое значение: новая ссылка.*

Возвращает новый [`PyLongObject`](https://python-all.ru/2.6/c-api/long.html#PyLongObject) на основе строкового значения *str*, которое интерпретируется согласно основанию системы счисления *base*. Если *pend* не равен *NULL*, то `*pend` будет указывать на первый символ в *str*, следующий за представлением числа. Если *base* равен `0`, основание определяется по ведущим символам *str*: если *str* начинается с `'0x'` или `'0X'`, используется основание 16; если *str* начинается с `'0'`, используется основание 8; в противном случае – основание 10. Если *base* не равен `0`, он должен быть между `2` и `36` включительно. Ведущие пробелы игнорируются. Если нет ни одной цифры, возбуждается [`ValueError`](https://python-all.ru/2.6/library/exceptions.html#exceptions.ValueError).

**[PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject)\* `PyLong_FromUnicode`([Py\_UNICODE](https://python-all.ru/2.6/c-api/unicode.html#Py_UNICODE) *\*u*, Py\_ssize\_t *length*, int *base*)**

*Возвращаемое значение: новая ссылка.*

Преобразует последовательность цифр Unicode в длинное целое Python. Первый параметр, *u*, указывает на первый символ строки Unicode, *length* задаёт количество символов, а *base* – основание системы счисления для преобразования. Основание должно находиться в диапазоне \[2, 36\]; если оно выходит за пределы, возбуждается [`ValueError`](https://python-all.ru/2.6/library/exceptions.html#exceptions.ValueError).

Новое в версии 1.6.

Изменено в версии 2.5: Ранее эта функция использовала `int` для *length*. Это может потребовать изменений в коде для корректной поддержки 64-разрядных систем.

**[PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject)\* `PyLong_FromVoidPtr`(void *\*p*)**

*Возвращаемое значение: новая ссылка.*

Создаёт целое или длинное целое Python из указателя *p*. Значение указателя можно получить из результирующего значения с помощью [`PyLong_AsVoidPtr()`](https://python-all.ru/2.6/c-api/long.html#PyLong_AsVoidPtr).

Новое в версии 1.5.2.

Изменено в версии 2.5: Если целое число больше LONG\_MAX, возвращается положительное длинное целое.

**long `PyLong_AsLong`([PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject) *\*pylong*)**

Возвращает представление содержимого *pylong* в виде C `long`. Если *pylong* больше `LONG_MAX`, возбуждается [`OverflowError`](https://python-all.ru/2.6/library/exceptions.html#exceptions.OverflowError) и возвращается `-1`.

**Py\_ssize\_t `PyLong_AsSsize_t`([PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject) *\*pylong*)**

Возвращает `Py_ssize_t` – представление содержимого *pylong* на языке C. Если *pylong* больше `PY_SSIZE_T_MAX`, возбуждается исключение [`OverflowError`](https://python-all.ru/2.6/library/exceptions.html#exceptions.OverflowError) и возвращается `-1`.

Новое в версии 2.6.

**unsigned long `PyLong_AsUnsignedLong`([PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject) *\*pylong*)**

Возвращает представление содержимого *pylong* в виде C `unsigned long`. Если *pylong* больше `ULONG_MAX`, возникает исключение [`OverflowError`](https://python-all.ru/2.6/library/exceptions.html#exceptions.OverflowError).

**PY\_LONG\_LONG `PyLong_AsLongLong`([PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject) *\*pylong*)**

Возвращает C `long long` из длинного целого Python. Если *pylong* невозможно представить как `long long`, будет возбуждено [`OverflowError`](https://python-all.ru/2.6/library/exceptions.html#exceptions.OverflowError).

Новое в версии 2.2.

**unsigned PY\_LONG\_LONG `PyLong_AsUnsignedLongLong`([PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject) *\*pylong*)**

Возвращает C `unsigned long long` из длинного целого Python. Если *pylong* невозможно представить как `unsigned long long`, будет возбуждено [`OverflowError`](https://python-all.ru/2.6/library/exceptions.html#exceptions.OverflowError), если значение положительно, или [`TypeError`](https://python-all.ru/2.6/library/exceptions.html#exceptions.TypeError) – если отрицательно.

Новое в версии 2.2.

**unsigned long `PyLong_AsUnsignedLongMask`([PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject) *\*io*)**

Возвращает C `unsigned long` из длинного целого Python без проверки на переполнение.

Новое в версии 2.3.

**unsigned PY\_LONG\_LONG `PyLong_AsUnsignedLongLongMask`([PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject) *\*io*)**

Return a C `unsigned long long` from a Python long integer, without checking for overflow.

Новое в версии 2.3.

**double `PyLong_AsDouble`([PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject) *\*pylong*)**

Возвращает представление содержимого

*pylong*

в виде C

`double`

. Если

*pylong*

не может быть приблизительно представлен как

`double`

, возбуждается исключение

[`OverflowError`](https://python-all.ru/2.6/library/exceptions.html#exceptions.OverflowError)

и возвращается

`-1.0`

.

**void\* `PyLong_AsVoidPtr`([PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject) *\*pylong*)**

Преобразует целое число Python *pylong* в указатель C `void`. Если *pylong* не удаётся преобразовать, будет возбуждено исключение [`OverflowError`](https://python-all.ru/2.6/library/exceptions.html#exceptions.OverflowError). Гарантируется, что результирующий указатель `void` будет пригоден для использования только для значений, созданных с помощью [`PyLong_FromVoidPtr()`](https://python-all.ru/2.6/c-api/long.html#PyLong_FromVoidPtr).

Новое в версии 1.5.2.

Изменено в версии 2.5: Для значений вне диапазона 0..LONG\_MAX принимаются как знаковые, так и беззнаковые целые числа.
