Что такое число для компьютера
Прежде чем изучать типы чисел — разберёмся, что вообще значит «число» с точки зрения компьютера, и как имена связаны с числовыми объектами.
Человек видит числа как абстрактные понятия: 10,
3.14, 1/3, даже
∞. Компьютер же не «понимает» числа в математическом смысле —
он хранит их представление: конкретную последовательность байтов по
конкретным правилам.
Для целых чисел это различие почти незаметно — представление в компьютере ведёт себя
так же, как число в математике. Но для дробных чисел разница становится важной — и мы
подробно разберём её в разделах 4.10–4.11, когда дойдём до float.
Пока достаточно запомнить сам принцип: то, что вы пишете в коде, и то, что реально хранится
внутри, — связанные, но не обязательно тождественные вещи.
Имена указывают на числовые объекты
В главе 3 мы разобрали важный принцип: имя (переменная) — это не «коробка», в которую кладут значение, а скорее стрелка, указывающая на объект. Этот же принцип полностью относится и к числам.
age = 10
print(age)
Что происходит при age = age + 1
Числа в Python — неизменяемые (immutable) объекты: сам объект
10 невозможно «отредактировать» в 11. Когда мы пишем:
age = 10
age = age + 1
print(age) # 11
происходит не редактирование, а переприсваивание — Python вычисляет новое значение и
заставляет имя age указывать на НОВЫЙ объект:
вычисление: 10 + 1 → 11
10 + 1, получил новый объект 11 и переприсвоил имя age этому новому объекту. Это ровно та же модель «имя → объект» и «переприсваивание меняет связь, а не сам объект», которую мы разбирали в главе 3.Мы будем возвращаться к этому принципу неизменяемости на протяжении всего курса — он объясняет поведение строк, кортежей и (в отличие от них) то, почему списки ведут себя иначе, когда мы дойдём до них в следующих главах.
id(age). Число (адрес объекта в памяти для CPython) изменится после переприсваивания — наглядное подтверждение того, что объект действительно стал другим.