Ошибки, traceback и как их читать
Ошибки — это данные, а не повод для паники. Разберём три самых частых типа и научимся читать traceback осмысленно.
Красный текст ошибки — это не повод паниковать. Это данные: Python подробно объясняет, что именно пошло не так и где именно искать проблему. Научиться спокойно читать эти сообщения — один из самых полезных навыков для новичка.
SyntaxError
Python не может даже понять структуру кода — до выполнения дело не дошло вовсе. Чаще всего причина — пропущенная скобка, кавычка или двоеточие.
print("Привет"
File "broken.py", line 1
print("Привет"
^
SyntaxError: '(' was never closed
NameError
Python встретил имя, которого ещё нигде не было создано присваиванием — часто это просто опечатка.
print(usr_name)
Traceback (most recent call last):
File "broken2.py", line 1, in <module>
print(usr_name)
^^^^^^^^
NameError: name 'usr_name' is not defined
IndentationError
В Python отступы — часть синтаксиса (мы вернёмся к этому подробно в главе про условия и циклы). Несогласованный отступ — тоже ошибка:
name = "Cartesian"
print(name)
File "broken3.py", line 2
print(name)
IndentationError: unexpected indent
Анатомия traceback
Traceback лучше всего читать снизу вверх — самая важная информация внизу: