Python Ice Cream: Лучший способ отладки кода
Прекратите использовать оператор print() для отладки своего кода. Существует лучший способ добиться того же самого.
Заявление Print()
Программисты тратят больше половины времени на отладку и решение проблем. И большинство программистов используют оператор print() для отладки и понимания потока кода. Использование оператора print() является очень распространенным подходом.
Однако при использовании оператора print() для отладки возникает множество проблем.
- Обычно после отладки и решения проблем программистам приходится вручную удалять оператор print().
- Много раз программистам приходится вручную выводить данные на печать() определенным образом, чтобы понять поток и вывод.
Обычно люди используют операторы print именно таким образом.
element_1 = 1
element_2 = 2
print(element_1)
print(element_1)
Выход
1
2
Проблема заключается в том, что может потребоваться возвращаться назад и проверять, какая переменная содержит какие данные. Возможно, придется выводить имя переменной, чтобы отслеживать все выводимые переменные.
Однако существует альтернативный способ.
Мы будем использовать IceCream🍦!
Введение
IceCream – это библиотека Python, позволяющая сделать отладку легкой и читабельной при минимальном количестве кода.
Среди ее популярных возможностей – печать выражений, имен переменных, имен функций, номеров строк, имен файлов и многого другого.
Установка IceCream
Установить библиотеку icecream можно с помощью программы pip.
pip install icecream
Импорт IceCream
Импорт модуля ic в скрипт python.
from icecream import ic
Начало работы с IceCream
Для этого достаточно заменить оператор print() на ic().
from icecream import ic
var_1 = 1
var_2 = 2
ic(var_1)
ic(var_2)
Вот что вы увидите на выходе.
ic| var_1: 1
ic| var_2: 2
Она не только выводит значение переменной, но и ее имя.
Не только переменные, но и ic() можно использовать в функциях, классах и т.д.
Функции
def func(num):
return num * 2
ic(func(3))
Выход
ic| func(3): 6
Как здорово! Он печатает имя метода (func), переданный аргумент (3) и выходной результат (6).
Как показано в примере ниже, каждое выражение, переданное в метод ic()печатает свое значение вместе с выражением.
Отладку можно применять и к структурам данных.
Словарь
sample_dict = {1:"A", 2:"B", 3:"C"}
ic(sample_dict[1])
Выход
ic| sample_dict[1]: 'A'
Список
sample_list = [1,2,3,4]
ic(sample_list[0])
Выход
ic| sample_list[0]: 1
Пользовательский префикс для ic()
По умолчанию IceCream предоставляет в качестве префикса ‘ic |’. Но по какой-то причине, если кто-то хочет заменить его на собственный префикс, то вот как это можно сделать.
from icecream import ic
ic.configureOutput(prefix='Your Custom IC Prefix| -> ')
ic("A custom prefix")
Выход
Your Custom IC Prefix| -> 'A custom prefix'
Отключить ic()
Вы можете использовать ic.disable(), чтобы прекратить печать ic(). Если вы хотите использовать их снова, используйте ic.enable().
Заключение
Использование команд print() для отладки может быть порой неуклюжим и неприятным. Сопоставление вывода с соответствующим отладочным оператором неясно. Кроме того, для понимания вывода требуется дополнительное ручное форматирование.
Как уже было сказано, отличной заменой этому является пакет Python IceCream. При небольшом количестве кода он делает отладку простой и читабельной.