Category: Programming

Что происходит при x = 10

Опубликовано где-то: 2026-06-03T20:03:01.000Z

Если попросить начинающего программиста объяснить, что делает эта строка:

x = 10

то чаще всего ответ будет примерно таким: “В переменную x записывается число 10”.

На первый взгляд всё звучит логично. Мы привыкли представлять переменную как коробку или ячейку памяти, внутрь которой можно что-то положить. Сначала коробка пустая, потом мы кладём туда число, строку или список.

Проблема в том, что Python работает немного иначе.

Чтобы понять многие особенности языка, полезно сразу отказаться от представления о переменных как о контейнерах для данных. Вместо этого стоит думать о переменной как об имени, которое указывает на объект.

Когда Python видит строку:

x = 10

он работает не с переменной, а прежде всего с самим числом 10.

Число 10 является объектом. После того как этот объект появился, имя x связывается с ним.

Если попытаться изобразить это схематично, получится что-то вроде:

x ───► 10

Стрелка здесь показывает, что имя x указывает на объект со значением 10.

На первый взгляд разница кажется незначительной. Какая разница, лежит число в переменной или переменная на него указывает?

На самом деле разница огромна, и её последствия будут сопровождать нас практически во всех следующих статьях.

Представим, что после этого мы пишем ещё одну строку:

y = x

Многие ожидают, что Python создаст вторую копию числа и положит её в новую переменную. Но этого не происходит.

Имя y просто начинает указывать на тот же объект, что и имя x.

Теперь картина выглядит так:

x ─┐
   ├──► 10
y ─┘

У нас по-прежнему только один объект, но уже два имени, через которые к нему можно обратиться.

Именно поэтому в Python принято разделять понятия «объект» и «имя». Объект хранит данные. Имя позволяет к этим данным обратиться.

Эта идея становится ещё интереснее, когда значение переменной меняется.

Рассмотрим такой код:

x = 10
x = 20

Если мыслить категориями коробок, можно представить, что число 10 внутри переменной каким-то образом заменилось на число 20.

Но в Python происходит другое.

Сначала имя x указывает на объект 10:

x ───► 10

После выполнения второй строки имя начинает указывать на другой объект:

x ───► 20

Сам объект 10 никуда не исчез и не превратился в 20. Просто имя x перестало на него ссылаться.

Это может показаться мелочью, но именно на этой идее построена вся модель работы Python с данными. Позже мы увидим, что она объясняет очень многие вещи: почему изменение списка иногда неожиданно влияет на другую переменную, чем отличается оператор is от ==, почему строки ведут себя иначе, чем списки, и как Python передаёт аргументы в функции.

Пока же достаточно запомнить одну мысль.

Когда вы пишете:

x = 10

Python не кладёт число в переменную.

Он создаёт связь между именем x и объектом 10.

Именно поэтому опытные Python-разработчики обычно говорят не «переменная хранит значение», а «имя ссылается на объект». Это немного менее привычно, зато гораздо ближе к тому, как язык работает на самом деле.