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

---

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

**`PyIntObject`**

Этот подтип

[`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) `PyInt_Type`**

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

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

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

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

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

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

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

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

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

Возвращает новый [`PyIntObject`](https://python-all.ru/2.6/c-api/int.html#PyIntObject) или [`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). Если строка представляет число, слишком большое для типа `long int` данной машины и предупреждения о переполнении подавлены, будет возвращён [`PyLongObject`](https://python-all.ru/2.6/c-api/long.html#PyLongObject). Если предупреждения о переполнении не подавлены, в этом случае будет возвращён *NULL*.

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

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

Создает новый целочисленный объект со значением *ival*.

Текущая реализация хранит массив объектов целых чисел для всех целых чисел между `-5` и `256`. Когда создаётся int в этом диапазоне, фактически возвращается ссылка на существующий объект. Поэтому изменение значения `1` должно быть возможным. Поведение Python в этом случае, вероятно, не определено. :-)

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

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

Создаёт новый объект целого числа со значением *ival*. Если значение больше `LONG_MAX` или меньше `LONG_MIN`, возвращается объект длинного целого числа.

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

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

Создаёт новый объект целого числа со значением *ival*. Если значение превышает `LONG_MAX`, возвращается объект длинного целого числа.

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

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

Сначала пытается привести объект к типу

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

, если он ещё не является таковым, а затем возвращает его значение. Если произошла ошибка, возвращается

`-1`

, и вызывающий код должен проверить

`PyErr_Occurred()`

, чтобы выяснить, была ли ошибка или значение просто оказалось равным -1.

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

Возвращает значение объекта

*io*

. Проверка ошибок не выполняется.

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

Сначала пытается привести объект к типу [`PyIntObject`](https://python-all.ru/2.6/c-api/int.html#PyIntObject) или [`PyLongObject`](https://python-all.ru/2.6/c-api/long.html#PyLongObject), если он ещё не является таковым, а затем возвращает его значение как unsigned long. Эта функция не проверяет переполнение.

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

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

Сначала пытается привести объект к типу [`PyIntObject`](https://python-all.ru/2.6/c-api/int.html#PyIntObject) или [`PyLongObject`](https://python-all.ru/2.6/c-api/long.html#PyLongObject), если он ещё не является таковым, а затем возвращает его значение как unsigned long long, без проверки переполнения.

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

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

Сначала пытается привести объект к типу [`PyIntObject`](https://python-all.ru/2.6/c-api/int.html#PyIntObject) или [`PyLongObject`](https://python-all.ru/2.6/c-api/long.html#PyLongObject), если он ещё не является таковым, а затем возвращает его значение как `Py_ssize_t`.

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

**long `PyInt_GetMax`()**

Возвращает максимальное целое число, которое может обработать система (`LONG_MAX`, как определено в системных заголовочных файлах).

**int `PyInt_ClearFreeList`()**

Очищает список свободных целых чисел. Возвращает количество элементов, которые не удалось освободить.

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