Python для новичковДанные и выраженияПеременные и присваивание

Переменные и присваивание

Уроки курсаПеременные и присваивание

Переменные в print() и типичные ошибки

Теория готова — теперь посмотрим, как переменная работает в связке с print(), и разберём ошибку, которую предыдущие разделы не затрагивали.

Самый простой сценарий: сохранить значение в переменную и передать её в print().

name = "Анна"
print(name)

Вывод:

Анна

Когда Python доходит до print(name), он не выводит слово name — он ищет, какое значение сейчас хранится под этим именем, и выводит его. Здесь это строка "Анна".

print() принимает любое количество аргументов через запятую, и переменные можно смешивать как угодно:

first_name = "Анна"
last_name = "Смирнова"
print(first_name, last_name)

Вывод:

Анна Смирнова

Python автоматически вставляет пробел между аргументами — это поведение print() по умолчанию.

SyntaxError и NameError: в чём разница

Если имя переменной нарушает правила из предыдущего раздела — начинается с цифры или совпадает с ключевым словом — Python выдаст SyntaxError ещё до запуска программы. Это ошибки разбора кода — такие же, как SyntaxError из-за опечатки, с которой мы уже встречались. Здесь причина другая: недопустимое имя переменной, но Python также обнаруживает её до запуска программы.

Но есть ошибка другого рода, с которой вы столкнётесь в процессе выполнения:

print(greeting)       # NameError: name 'greeting' is not defined
greeting = "Привет"

Здесь имя greeting написано правильно — оно не нарушает никаких правил именования. Но Python выполняет код сверху вниз, и когда доходит до строки print(greeting), переменная ещё не существует: она объявлена строчкой ниже. Python не смотрит вперёд — он ищет greeting прямо сейчас и не находит.

Результат — NameError во время выполнения, а не при разборе. Это принципиальное отличие от SyntaxError: программа успела запуститься, но упала на конкретной строке.

Исправление одно — поставить присваивание перед использованием:

greeting = "Привет"
print(greeting)       # Привет

Правило простое: переменная должна быть создана раньше, чем вы к ней обращаетесь.