Первые переменные и первые ошибки
Один правильный мысленный образ переменной — и первая спокойная встреча с сообщением об ошибке, задолго до того, как оно застанет вас врасплох.
Первые переменные: как Python на самом деле их хранит
Уже в следующей главе вы начнёте активно пользоваться переменными. Один маленький, но важный мысленный образ стоит освоить прямо сейчас — он убережёт от путаницы позже.
name = "Anna"
print(name)
Легко (и ошибочно) представлять переменную как «коробку», в которую положили значение. На самом деле удобнее думать иначе: имя — это ярлык, который указывает на значение, а не контейнер, где значение физически лежит.
name = "Anna" означает «пусть имя name теперь указывает на значение "Anna"», а не «положи текст внутрь коробки по имени name». Подробное устройство памяти Python — тема для более поздних глав; сейчас важно только не привыкнуть к неверному образу «коробки».В практике этого раздела создайте переменную name со своим именем и выведите её через print(name). Затем присвойте name другое значение и выведите снова — обратите внимание, что «ярлык» просто стал указывать на другое значение.
Ошибки — это нормально
Рано или поздно любая программа выдаёт ошибку — и это не признак того, что что-то пошло катастрофически не так. Разберём это на примере прямо сейчас, пока ставки низкие.
print("Hello"
В этом коде не хватает закрывающей скобки. Если выполнить такую строку, Python не угадывает, что вы имели в виду, — вместо этого он останавливается и печатает подробное сообщение об ошибке, которое называется traceback («трассировка»): в нём указано, в какой строке произошла проблема и какого рода она была (в данном случае — незакрытая скобка).
Полезная привычка при виде ошибки — прочитать последнюю строку traceback: там обычно кратко написано, что именно пошло не так. Всё, что выше, — это путь, которым Python дошёл до проблемы.
В практике этого раздела найдёте специально сломанную строку кода. Прочитайте traceback, найдите строку с проблемой и исправьте её самостоятельно — так же, как в разделе «Типичная ошибка» предыдущей практики этой главы.