Красный текст – не приговор. Как читать ошибки в Python и перестать их бояться
Разбираемся, как устроены сообщения об ошибках Python, что такое traceback, где искать причину сбоя и как системно находить ошибки в своем коде.
Представьте, что вы собираете мебель. На середине процесса вы понимаете, что деталь А не стыкуется с деталью Б. Инструкция не начинает кричать на вас красными буквами. Она просто показывает, на каком шаге вы ошиблись, чтобы вы могли это исправить.
Ошибки в Python работают точно так же.
Когда новичок видит на экране простыню красного текста, первая реакция – паника. Кажется, что компьютер ругается, что вы сломали программу или сделали что-то ужасное. На самом деле Python просто говорит: «Я запутался. Покажи, где именно, и я продолжу работать».
В этой статье мы разберем, как читать эти «красные простыни» ошибок так же легко, как меню в ресторане.
Золотое правило: Читай СНИЗУ ВВЕРХ
Это самое главное, что нужно запомнить.
Python выполняет код сверху вниз. Но когда он встречает ошибку, он формирует отчет (он называется traceback – «обратная трассировка»). В этом отчете самая важная информация находится в самом низу.
Снизу – Диагноз (что именно сломалось).
Сверху и в середине – Карта (где именно это произошло).
Анатомия ошибки: из чего она состоит?
Давайте посмотрим на типичную ошибку и разберем ее на три простые части.
# Пример кодаdef calculate_price(quantity): price = 100 return price + quantitytotal = calculate_price("пять")
На этот код интерпретатор Python нам выдаст следующую ошибку:
Traceback (most recent call last): File "main.py", line 5, in <module> total = calculate_price("пять") File "main.py", line 3, in calculate_price return price + quantityTypeError: unsupported operand type(s) for +: 'int' and 'str'
Не пугайтесь объема. Здесь всего 3 смысловых блока:
1. Карта (Середина)
File "main.py", line 5, in <module>
File "main.py", line 3, in calculate_price
Это адрес. Python говорит: «Мы были в файле main.py, на строке 5, потом перешли на строку 3». Вам пока не нужно вникать в этот список. Просто знайте, что это путь, который прошел код, прежде чем упасть.
2. Код-виновник (Строчка перед диагнозом)
return price + quantity
Python любезно показывает вам строчку кода, на которой он споткнулся, и даже выделяет её.
3. Диагноз (Самая последняя строчка)
TypeError: unsupported operand type(s) for +: 'int' and 'str'
Вот на что нужно смотреть в первую очередь! Здесь написано тип ошибки (TypeError) и сообщение об ошибке (unsupported operand...). Это и есть ответ на вопрос «Что не так?».
«Великая четверка»: самые частые ошибки
Эти четыре типа ошибок относятся к числу тех, с которыми начинающие программисты сталкиваются особенно часто. Давайте переведем их с «питоньего» на человеческий.
1. SyntaxError (Синтаксическая ошибка)
Перевод: «Я не понимаю это предложение, тут опечатка».
Аналогия из жизни: Вы пишете «Привет, меня зовут Иван» без запятой и кавычек. Смысл понятен человеку, но грамматика нарушена. Частые причины:
Забыли закрыть скобку
print("Привет"Забыли кавычку
name = "Иван- пропустили двоеточие после
if,for,while,def Поставили русскую запятую вместо точки в числе
3,14(Python ждет точку3.14).
Важно отметить, что в последнем случае может возникнуть неявная ошибка, когда интерпретатор считает 3,14 как кортеж.
2. NameError (Ошибка имени)
Перевод: «Я не знаю, кто это такой. В моем словаре такого имени нет».
Аналогия из жизни: Вы просите коллегу передать привет Абвгдейщику, но такого человека в офисе не работает. Частые причины:
Опечатка в встроенной команде:
prnt("Привет")вместоprint().Вы пытаетесь использовать переменную, которую еще не создали.
3. TypeError (Ошибка типа)
Перевод: «Ты пытаешься сложить яблоки с килограммами».
Аналогия из жизни: Вы пытаетесь вставить квадратный колышек в круглую дырку. Частые причины:
Математика со строками:
"Возраст: " + 25(Python не умеет складывать текст и число. Нужно превратить число в текст:"Возраст: " + str(25)).- Передаете функции значение неподходящего типа или выполняете операцию над несовместимыми типами данных.
4. FileNotFoundError (Файл не найден)
Перевод: «Я пришел по адресу, но дома нет».
Аналогия из жизни: Вы ищете книгу на полке, но её там нет. Либо вы её не положили, либо вы зашли не в ту библиотеку. Частые причины:
Файл лежит в другой папке.
- Вы ошиблись в названии файла или регистре символов (например,
data.csvвместоData.csv). В зависимости от операционной и файловой системы такие имена могут рассматриваться как разные.
Алгоритм: Что делать, если вылезла ошибка?
Не закрывайте глаза и не бегите сразу за помощью к преподавателю или в чат. Пройдите по этому чек-листу из 4 шагов:
Прокрутите в самый низ. Прочитайте последнюю строчку. Какой Тип ошибки? Что написано в Сообщении? (Если не знаете английский — скопируйте сообщение в переводчик).
Посмотрите на номер строки. В середине текста найдите строчку
File "...", line X. Запомните номерX.Откройте свой код. Перейдите на строку
X.- Проверьте указанную строку и соседние строки. При синтаксических ошибках причина иногда находится немного выше того места, на которое указывает Python: например, на предыдущей строке могла остаться незакрытая скобка или кавычка.
Если ничего не помогло: Скопируйте самую последнюю строчку (Диагноз) и вставьте её в поисковик или в чат с ИИ. Формулировка должна быть такой: "Пишу на Python, получил ошибку TypeError: unsupported operand type(s) for +: 'int' and 'str'. Вот мой код: [код]. Объясни причину ошибки и подскажи, на что обратить внимание". Это сэкономит вам часы времени!
Главный секрет программистов
Запомните одну вещь: ошибки – это не признак того, что вы плохой программист.
Ошибки – это признак того, что вы пишете код и пробуете новые вещи. Если у вас нет ошибок, значит, вы делаете только то, что уже сто раз делали, и не развиваетесь.
Опытный разработчик отличается от новичка не тем, что не делает ошибок. Опытный разработчик отличается тем, что не боится красного текста, смотрит в нижнюю строчку и за 10 секунд понимает, куда смотреть.
В следующий раз, когда Python выдаст вам простыню красного текста, улыбнитесь. Он просто оставил вам подсказку. Идите и разгадайте её!
Статья подготовлена в рамках образовательных проектов KHRAMOVD.LAB. Есть вопросы по Python? Задавайте их на нашу почту: khramovde@statandcyb.ru
← Все статьи