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

Что такое число для компьютера

Прежде чем изучать типы чисел — разберёмся, что вообще значит «число» с точки зрения компьютера, и как имена связаны с числовыми объектами.

Человек видит числа как абстрактные понятия: 10, 3.14, 1/3, даже . Компьютер же не «понимает» числа в математическом смысле — он хранит их представление: конкретную последовательность байтов по конкретным правилам.

Число вматематике10, 3.14, 1/3, ∞Представление вкомпьютереконкретный способхраненияРезультатвычисленияиногда точный, иногда— нет
Математическое число и его представление в компьютере — связаны, но не всегда совпадают

Для целых чисел это различие почти незаметно — представление в компьютере ведёт себя так же, как число в математике. Но для дробных чисел разница становится важной — и мы подробно разберём её в разделах 4.10–4.11, когда дойдём до float. Пока достаточно запомнить сам принцип: то, что вы пишете в коде, и то, что реально хранится внутри, — связанные, но не обязательно тождественные вещи.

Имена указывают на числовые объекты

В главе 3 мы разобрали важный принцип: имя (переменная) — это не «коробка», в которую кладут значение, а скорее стрелка, указывающая на объект. Этот же принцип полностью относится и к числам.

age.py
age = 10
print(age)
age 10
age указывает на числовой объект 10 — не «содержит» его

Что происходит при age = age + 1

Числа в Python — неизменяемые (immutable) объекты: сам объект 10 невозможно «отредактировать» в 11. Когда мы пишем:

age2.py
age = 10
age = age + 1
print(age)  # 11

происходит не редактирование, а переприсваивание — Python вычисляет новое значение и заставляет имя age указывать на НОВЫЙ объект:

age (до)10
ДО: age указывает на 10

вычисление: 10 + 1 → 11

age (после)11
ПОСЛЕ: age указывает на новый объект 11 — старый объект 10 больше не нужен
Точная формулировка важна
Python не «изменил число 10 на 11». Целые числа неизменяемы: Python вычислил результат 10 + 1, получил новый объект 11 и переприсвоил имя age этому новому объекту. Это ровно та же модель «имя → объект» и «переприсваивание меняет связь, а не сам объект», которую мы разбирали в главе 3.

Мы будем возвращаться к этому принципу неизменяемости на протяжении всего курса — он объясняет поведение строк, кортежей и (в отличие от них) то, почему списки ведут себя иначе, когда мы дойдём до них в следующих главах.

Попробуем
Наберите этот пример в браузерной практике или в REPL (глава 3) — и после каждой строки проверяйте id(age). Число (адрес объекта в памяти для CPython) изменится после переприсваивания — наглядное подтверждение того, что объект действительно стал другим.
Практика: числа как объекты, а не коробки
Интерактивный ноутбук прямо в браузере — Python 3.14 через Pyodide, без установки
Открыть практику →