Добавить в корзинуПозвонить
Найти в Дзене
MakeBetter[Code] Blog

[🍃] Отладка и Логирование в Python | Ключевые знания для начинающих

Отладка - важный навык для любого программиста, и Python предлагает несколько техник, которые помогут вам найти и исправить ошибки в вашем коде. В этой статье мы рассмотрим некоторые из этих методов, чтобы вы могли более эффективно отлаживать свои программы на Python. Что такое отладка? Прежде чем перейти к рассмотрению самих методов отладки, давайте сначала определим, что такое отладка. Согласно Википедии, отладка - это процесс поиска и исправления ошибок в компьютерной программе. Он включает в себя использование различных инструментов и методов для поиска ошибок и их устранения из системы. Почему отладка важна? Отладка важна, потому что она позволяет выявить и исправить ошибки в коде до того, как они приведут к проблемам. Это может сэкономить время и усилия в долгосрочной перспективе, а также повысить качество и надежность вашего программного обеспечения. Кроме того, отладка помогает узнать больше о том, как работает ваш код, что может быть полезно для будущих проектов. Техники отлад
Оглавление

Отладка - важный навык для любого программиста, и Python предлагает несколько техник, которые помогут вам найти и исправить ошибки в вашем коде. В этой статье мы рассмотрим некоторые из этих методов, чтобы вы могли более эффективно отлаживать свои программы на Python.

Что такое отладка?

Прежде чем перейти к рассмотрению самих методов отладки, давайте сначала определим, что такое отладка. Согласно Википедии, отладка - это процесс поиска и исправления ошибок в компьютерной программе. Он включает в себя использование различных инструментов и методов для поиска ошибок и их устранения из системы.

Почему отладка важна?

Отладка важна, потому что она позволяет выявить и исправить ошибки в коде до того, как они приведут к проблемам. Это может сэкономить время и усилия в долгосрочной перспективе, а также повысить качество и надежность вашего программного обеспечения. Кроме того, отладка помогает узнать больше о том, как работает ваш код, что может быть полезно для будущих проектов.

Техники отладки в Python

print()

Одним из самых простых и основных методов отладки является вставка в код операторов печати (print).

Эти операторы помогут вам увидеть значения переменных в различных точках вашей программы, что поможет вам определить, где возникает проблема.

Отладчик pdb

Отладчик Python - это мощный инструмент, который позволяет просматривать код построчно и проверять значения переменных и выражений на каждом шаге. Это поможет вам определить источник ошибок в вашем коде и получить более глубокое понимание того, как выполняется ваша программа.

Чтобы использовать отладчик, сначала нужно импортировать модуль pdb, который расшифровывается как "Python Debugger". Затем вы можете вставить оператор pdb.set_trace() в то место вашего кода, где вы хотите начать отладку. Этот оператор устанавливает точку прерывания в вашем коде и приостанавливает выполнение, позволяя вам изучить текущее состояние вашей программы.

Когда программа приостановлена, вы можете использовать различные команды для просмотра кода и изучения переменных и выражений. Вот некоторые из наиболее часто используемых команд:

  • n (next): Выполняет текущую строку кода и переходит к следующей строке.
  • s (step): Переход к вызову функции в текущей строке.
  • r (return): Продолжает выполнение до возврата текущей функции.
  • c (продолжить): Продолжает выполнение до следующей точки прерывания.
  • p (print): Выводит значение переменной или выражения.
  • l (list): Показывает текущий участок выполняемого кода.
  • h (help): Показывает список доступных команд.

Я написал небольшую программу, где мы можем увидеть pdb в действии:

-2
-3
  1. Первая строка (/opt/debug/main.py(14)write_csv()) говорит о том, что программа в данный момент приостановлена на 14 строке функции write_csv в файле main.py.
  2. Вторая строка (-> writer.writows(rows)) показывает текущую выполняемую строку кода.
  3. Третья строка ((Pdb) writer) сообщает, что writer - это объект _csv.writer, расположенный по адресу памяти 0x0000012C3F13C810.
  4. Четвертая строка ((Pdb) rows) сообщает, что rows - это словарь, содержащий одну пару ключ-значение: 'url': 'https://www.google.com', 'title': 'Google'.
  5. Пятая строка ((Pdb) n) сообщает отладчику, что нужно выполнить текущую строку кода и перейти к следующей строке.
  6. Шестая строка (--Return--) говорит о том, что функция write_csv завершила выполнение и возвращает управление главной функции завершая программу. Важно отметить, что отладчик все еще активен и процесс по прежнему жив, хотя программа по сути завершила работу. Потому мы можем продолжать осматривать внутренности функции.
  7. Вызов l в ((Pdb) l) сообщает отладчику, что мы хотим показать участок кода, который сейчас будет выполняться.

Ведение журнала (logging и loguru)

Ведение журнала - это процесс записи событий, происходящих во время выполнения программы, для последующего анализа. В Python вы можете использовать встроенный модуль протоколирования для создания сообщений журнала, которые помогут вам понять, как выполняется ваш код.

logging

Модуль logging предоставляет возможность регистрировать сообщения на разных уровнях серьезности, от отладочных сообщений до критических ошибок. Уровнями являются, в порядке возрастания серьезности: DEBUG, INFO, WARNING, ERROR и CRITICAL.

Вот пример использования модуля logging:

-4

В этом примере мы сначала настраиваем логгер, вызывая функцию basicConfig и указывая имя файла журнала и уровень логирования. Затем мы регистрируем сообщения на разных уровнях с помощью соответствующих функций регистрации.

Сообщения журнала записываются в указанный файл журнала, причем каждое сообщение включает временную метку и соответствующий уровень. Вы также можете записывать дополнительную информацию, включая в сообщения журнала шаблоны форматирования строк и передавая дополнительные аргументы функциям логирования.

loguru

Loguru - это библиотека логирования Python, которая предоставляет простой и интуитивно понятный интерфейс для логирования сообщений с подробными метаданными.

Вот пример использования loguru:

-5
-6

В этом примере мы сначала импортируем объект logger из модуля loguru.

Затем мы настраиваем логгер, вызывая метод add и указывая имя файла журнала, а также дополнительные опции для ротации и компрессии журнала.

Затем мы записываем сообщение на уровне INFO, используя метод logger.info, и включаем дополнительные метаданные в виде аргументов ключевых слов. Эти метаданные будут включены в сообщение журнала и могут быть использованы для фильтрации и анализа.

Наконец, мы регистрируем исключение с помощью метода logger.exception, который автоматически включает полную трассировку стека исключения в сообщение журнала.

Loguru предоставляет ряд дополнительных функций и опций конфигурации, таких как поддержка структурированного логирования и пользовательских форматов сообщений.

Он также включает встроенный метод catch для перехвата и регистрации необработанных исключений в вашем коде.

В целом, loguru - это мощная и гибкая библиотека логирования, которая поможет вам легче и эффективнее регистрировать сообщения и диагностировать проблемы в ваших Python-приложениях.

🎉✨ Поздравляю с завершением чтения статьи

Если Вам понравилось, можете подписаться, оставить комментарий и поставить лайк.

Также, можете взглянуть на некоторые из моих других публикаций, чтобы найти еще больше отличного контента 🔥:

[🍃] Итераторы и Генераторы | Ключевые знания для начинающих
MB Magazine12 апреля 2023
[🍃] Работа с Файлами в Python | Ключевые знания для начинающих
MB Magazine9 апреля 2023
[🍃] Лямбда-функции в Python | Ключевые знания для начинающих
MB Magazine9 апреля 2023