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

---

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

**`PyIntObject`**

Этот подтип [`PyObject`](https://python-all.ru/2.7/c-api/structures.html#c.PyObject) представляет целочисленный объект Python.

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

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

#### `int PyInt_Check(PyObject *o)`

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

Изменено в версии 2.2: Разрешено принимать подтипы.

#### `int PyInt_CheckExact(PyObject *o)`

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

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

#### `PyObject* PyInt_FromString(char *str, char **pend, int base)`

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

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

#### `PyObject* PyInt_FromLong(long ival)`

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

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

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

#### `PyObject* PyInt_FromSsize_t(Py_ssize_t ival)`

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

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

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

#### `PyObject* PyInt_FromSize_t(size_t ival)`

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

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

#### `long PyInt_AsLong(PyObject *io)`

Сначала пытается привести объект к [`PyIntObject`](https://python-all.ru/2.7/c-api/int.html#c.PyIntObject), если он еще не является таковым, а затем возвращает его значение. В случае ошибки возвращается `-1`, и вызывающий код должен проверить `PyErr_Occurred()`, чтобы определить, была ли ошибка или значение просто оказалось равным `-1`.

#### `long PyInt_AS_LONG(PyObject *io)`

Возвращает значение объекта *io*. Проверка ошибок не выполняется.

#### `unsigned long PyInt_AsUnsignedLongMask(PyObject *io)`

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

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

#### `unsigned PY_LONG_LONG PyInt_AsUnsignedLongLongMask(PyObject *io)`

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

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

#### `Py_ssize_t PyInt_AsSsize_t(PyObject *io)`

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

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

#### `long PyInt_GetMax()`

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

#### `int PyInt_ClearFreeList()`

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

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