Переменные и присваивание
Уроки курсаПеременные и присваивание
Переменные в 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) # Привет
Правило простое: переменная должна быть создана раньше, чем вы к ней обращаетесь.
