Глава 4 · Python любит числа

int — целые числа без страха больших значений

Целые числа в Python могут расти намного больше, чем в большинстве других языков — и остаются при этом неизменяемыми объектами.

int (integer — целое число) — тип для чисел без дробной части: положительных, отрицательных и нуля.

celye.py
print(0)
print(42)
print(-17)
print(type(42))

Числа практически без ограничения размера

В отличие от многих других языков программирования, где целые числа ограничены фиксированным диапазоном (например, 32 или 64 бита), в Python int может расти сколь угодно — точность произвольная, ограниченная практически только доступной памятью компьютера, а не языком.

bolshoe_chislo.py
huge = 10 ** 100
print(huge)
Точная формулировка
Правильно говорить «произвольная точность, ограниченная доступными ресурсами», а не «неограниченный размер». Формально предел есть — но на практике вы почти никогда его не достигнете в обычных программах.

Числа неизменяемы — продолжение

Мы уже видели это в разделе 4.1 на примере age. Ещё раз, уже с двумя именами:

a_b.py
a = 10
b = a
a += 1
print(a)  # 11
print(b)  # 10 — b не изменился
a11b10
После a += 1: у a — новая связь; b по-прежнему указывает на прежний объект
Не используйте id() как учебный трюк для «кеша целых чисел»
Вы можете где-то встретить сравнение id(256) и id(257) как «доказательство» особого поведения маленьких чисел. Это деталь реализации CPython (оптимизация кеширования маленьких целых чисел), а не гарантия языка Python — полагаться на неё в реальном коде нельзя, и как обучающий пример она скорее запутывает, чем помогает.

bool — особый родственник int

Значения True и False образуют тип bool — и исторически он тесно связан с int: True ведёт себя как 1, а False — как 0.

bool_int.py
print(int(True))   # 1
print(int(False))  # 0
print(True + True) # 2
Но в обычном коде — это логические значения
То, что bool технически «числовой» — деталь языка, а не приглашение складывать True + True в реальном коде. Полноценно об условиях и логике — в главе про условия; здесь достаточно знать связь с числами, если вы её где-то встретите.

Разделители-подчёркивания для читаемости

В длинных числах легко потерять счёт нулям. Python позволяет разбивать число подчёркиваниями — они не влияют на значение, только на читаемость:

naselenie.py
population = 38_000_000
print(population)  # 38000000

Сокращённое присваивание

Операторы вроде += — это компактная запись «пересчитать и переприсвоить», а не «изменить число на месте»:

augmented.py
x = 10
x += 1   # то же, что x = x + 1
x -= 2   # то же, что x = x - 2
x *= 3   # то же, что x = x * 3
Практика: большие числа и неизменяемость int
Интерактивный ноутбук прямо в браузере — Python 3.14 через Pyodide, без установки
Открыть практику →