Хватит использовать print для отладки в Python переходите на Icecream

Хватит использовать print для отладки в Python переходите на Icecream

Если вы используете print для отладки кода, в терминале может оказаться множество строк вывода, а вам придется выяснять, к какому участку кода принадлежит конкретный вывод.

Например, запустив приведенный ниже скрипт…

…мы получим следующее:

Какой из этих выводов является num1 , а какой num2 ? Что делать, если будет более 5 переменных? Попытка найти отвечающий за вывод исходный код может занять много времени.

Для облегчения поиска можно добавить текст в объявлении печати:

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

Вот в чем прелесть использования I cecream .

Что такое Icecream?

Это библиотека Python, которая делает отладку печати более читабельной с минимальным количеством кода и поддерживающаяся в Python 2, Python 3, PyPy2 и PyPy3.

Для ее установки используется следующая команда:

Попробуем напечатать вывод функции Python:

Хватит использовать print для отладки в Python переходите на Icecream

Используя ic , мы видим не только выходные данные, но и функцию с ее аргументами. Удобно! Цвет в терминале также будет таким же, как и показанный выше вывод.

Проверка выполнения

Определить где был выполнен код можно следующим образом:

С Icecream задача решается простым вызовом ic() без дополнительных параметров:

Хватит использовать print для отладки в Python переходите на Icecream

Становится понятно, что код в строке 5 из функции hello был выполнен, а код в строке 7 не работал.

Кастомный префикс

Если хотите вставить кастомный префикс в свой оператор печати, например, время выполнения кода, I cecream позволит сделать и это:

Хватит использовать print для отладки в Python переходите на Icecream

Теперь время выполнения кода автоматически отображается в выходных данных.

Получаем больше контекста

Помимо информации об отвечающем за вывод коде можно узнать, из какой строки и файла был он был выполнен. Чтобы это реализовать и узнать контекст, добавьте includeContext=True в ic.configureOutput() :

Хватит использовать print для отладки в Python переходите на Icecream

Первый вывод был выполнен функцией plus_five из файла icecream_example.py в строке 7.

Удаляем Icecream после завершения отладки

I cecream можно использовать не только для отладки, но и, например, для красивой печати:

Хватит использовать print для отладки в Python переходите на Icecream

Поскольку теперь можно различить отладочный и красивый вывод, становится проще искать и удалять все операторы ic после отладки:

После удаления всех отладочных следов код остается чистым.

Хватит использовать print для отладки в Python переходите на Icecream

Заключение

Поскольку обнаружение, локализация и устранение ошибок очень важны в разработке, необходимо стараться делать этот этап проще и понятнее. Мы изучили, как сделать вывод отладочной информации на экран более читабельным и информативным с помощью I cecream. Существует масса других вариантов: django-debug-toolbar , py-spy , line_profiler , memory_profiler и т. д. но описанный в статье легковеснее и практичнее.