Ошибки и исключения в Python 3.15: читаем трейсбек и подсказки «Did you mean»
try/except/else/finally, свои исключения, чтение трейсбека. Для опытных: точные указатели (3.11), группы исключений и except* (3.11), except без скобок (3.14), новые подсказки в 3.15.
- Читать трейсбек сверху вниз и снизу вверх
- Ловить только нужные исключения
- Пользоваться подсказками интерпретатора
Mwanzo wa muhadhara
Python 3.15 подсказывает решение прямо в ошибке
- JavaScript-привычка: list.push → в Python append
- 3.15 предлагает правильный метод
- Для tuple — совет взять list, для dict — d[k] = v
Вы пришли из JavaScript и по привычке добавляете элемент в список методом push. Раньше Python отвечал сухо: у списка нет такого атрибута — и всё, ищите сами. В 3.15 ошибка звучит иначе: такого атрибута нет, возможно, вы имели в виду append? Попытка добавить элемент в кортеж подскажет взять список, а метод put у словаря — использовать квадратные скобки. Ошибки перестают быть приговором и становятся подсказкой. Давайте научимся их читать.
>>> ["Кофе", "Такси"].push("Обед")
AttributeError: 'list' object has no attribute 'push'.
Did you mean '.append'?
>>> (1, 2).append(3)
AttributeError: 'tuple' object has no attribute 'append'.
Did you mean to use a 'list' object?
>>> {}.put("Еда", 120)
AttributeError: 'dict' object has no attribute 'put'.
Use d[k] = v.
Трейсбек: читаем снизу вверх
- Последняя строка: тип ошибки и сообщение
- Выше: цепочка вызовов, от внешнего к внутреннему
- ~~~^^^ (3.11+) — точное место в строке
Трейсбек — это отчёт о том, как программа дошла до ошибки. Читать его удобнее снизу вверх. Последняя строка — самое главное: тип ошибки и человеческое описание. Здесь — не удалось превратить слово «сто» в число. Чуть выше — строка кода, где это случилось, ещё выше — кто её вызвал, и так до самого начала программы. Значки-волны и галочки под кодом показывают, какое именно выражение в строке сломалось.
Traceback (most recent call last):
File "load.py", line 8, in <module>
load(rows)
~~~~^^^^^^
File "load.py", line 5, in load
return [parse_amount(r["amount"]) for r in rows]
~~~~~~~~~~~~^^^^^^^^^^^^^
File "load.py", line 2, in parse_amount
return float(raw.replace(",", "."))
ValueError: could not convert string to float: 'сто'
Пять ошибок, которые вы увидите первыми
- NameError — имя не определено (опечатка)
- TypeError — операция не для этого типа
- ValueError — тип верный, значение нет
- KeyError / IndexError — нет ключа / индекса
- AttributeError — нет метода или поля
Типов ошибок в Python десятки, но на старте вы встретите в основном пять. NameError — опечатались в имени или забыли его объявить. TypeError — пытаетесь сделать с объектом то, чего он не умеет, например сложить строку с числом. ValueError — тип правильный, а значение не подходит, как слово «сто» для перевода в число. KeyError и IndexError — обратились к ключу или позиции, которых нет. И AttributeError — у объекта нет такого метода.
Muhadhara kamili unapatikana kwa usajili
Kuna slaidi 10 zaidi katika toleo kamili.
Video, slaidi zote, maelezo, majaribio, AI tutor na mahojiano vitafunguka baada ya kuingia na kujisajili.
Ingia au jisajili JiandikisheYaliyomo kwenye muhadhara
- Python 3.15 подсказывает решение прямо в ошибке
- Трейсбек: читаем снизу вверх
- Пять ошибок, которые вы увидите первыми
- try/except: перехватить и обработать
- Грабли: голый except глотает всё
- raise и свои исключения
- ❓ Стоп-проверка: в каком порядке напечатается?
- ✅ Ответ: сначала finally, потом результат
- Что нового: точные указатели и add_note (3.11)
- Что нового: группы исключений и except* (3.11)
- Что нового: except без скобок (3.14, PEP 758)
- Что нового: «Did you mean» стало умнее (3.15)
- Итог: трекер падает понятно и только по делу
Makala kuhusu somo hili
- Exceptions katika Python: try, except, else, finally, raise na exceptions zako mwenyewe
- Jinsi ya kupakua na kusakinisha Python kwenye Windows, macOS na Linux: hatua kwa hatua
- Mifuatano katika Python: split, replace, strip, join, slices na f-strings
- Moduli na pakiti za Python: import, pip, venv na maktaba kwa lugha rahisi
- Jinsi ya kujifunza Python kuanzia mwanzo: mpango wa kujifunza kwa wanaoanza hatua kwa hatua
Mihadhara yote ya kozi hii
- Python 3.15 с нуля и для опытных: что нового и как учить
- Python 3.15: установка, REPL и первый скрипт за десять минут
- Переменные, числа и строки в Python: f-строки и t-строки
- Условия, циклы и match/case в Python: управляем ходом программы
- Списки, кортежи, словари и множества: frozendict в Python 3.15
- Comprehensions в Python: распаковка * и ** внутри (PEP 798)
- Функции и аннотации типов в Python: от def до sentinel
- Ошибки и исключения в Python 3.15: читаем трейсбек и подсказки «Did you mean»
- Модули, пакеты и ленивые импорты в Python 3.15 (PEP 810)
- Файлы, JSON и CSV в Python: pathlib и UTF-8 по умолчанию
- Классы и dataclasses в Python: ООП без лишнего кода
- Асинхронность и потоки в Python: asyncio, TaskGroup и free-threading
- Профилирование Python 3.15: Tachyon вместо cProfile и итоговый проект