Как красиво логировать объекты без ручного форматирования
Когда нужно записать в лог сложный объект (например, dict с вложенными структурами), обычный print() делает кашу. А logging без форматирования выглядит громоздко. Есть быстрый способ — использовать pprint прямо внутри логирования.
Хотите логировать сложные структуры красиво и читаемо, но не хотите вручную форматировать JSON или писать многострочные print(). Используйте pprint.pformat() — он превращает объект в красиво отформатированную строку, которая идеально ложится в лог.
Когда нужно записать в лог сложный объект (например, dict с вложенными структурами), обычный print() делает кашу. А logging без форматирования выглядит громоздко. Есть быстрый способ — использовать pprint прямо внутри логирования.
Хотите логировать сложные структуры красиво и читаемо, но не хотите вручную форматировать JSON или писать многострочные print(). Используйте pprint.pformat() — он превращает объект в красиво отформатированную строку, которая идеально ложится в лог.
Получаем значения из словаря без KeyError
Новички часто сталкиваются с ошибкой KeyError, когда ключа в словаре нет. Вместо проверки через if можно использовать встроенный и безопасный способ.
Используй метод dict.get() — он возвращает значение по ключу или None (или значение по умолчанию), если ключ отсутствует.
🎯 Итог:
dict.get() делает код короче, безопаснее и избавляет от лишних проверок на существование ключей.
Новички часто сталкиваются с ошибкой KeyError, когда ключа в словаре нет. Вместо проверки через if можно использовать встроенный и безопасный способ.
Используй метод dict.get() — он возвращает значение по ключу или None (или значение по умолчанию), если ключ отсутствует.
🎯 Итог:
dict.get() делает код короче, безопаснее и избавляет от лишних проверок на существование ключей.
Аккуратно игнорируем ошибки без try/except
Иногда ошибка — это нормальное поведение программы. Например, файл может не существовать, ключ в кеше — отсутствовать, а удаление временного ресурса — падать. Новички обычно оборачивают такие места в громоздкий try/except, из-за чего код становится шумным и хуже читается.
В Python есть элегантное решение — contextlib.suppress. Он позволяет явно указать, какие исключения нужно проигнорировать, не скрывая логику и не перехватывая всё подряд.
🎯 Итог:
contextlib.suppress делает код чище и честнее: вы явно показываете, какую ошибку считаете допустимой, без лишнего try/except и хака с pass.
Иногда ошибка — это нормальное поведение программы. Например, файл может не существовать, ключ в кеше — отсутствовать, а удаление временного ресурса — падать. Новички обычно оборачивают такие места в громоздкий try/except, из-за чего код становится шумным и хуже читается.
В Python есть элегантное решение — contextlib.suppress. Он позволяет явно указать, какие исключения нужно проигнорировать, не скрывая логику и не перехватывая всё подряд.
🎯 Итог:
contextlib.suppress делает код чище и честнее: вы явно показываете, какую ошибку считаете допустимой, без лишнего try/except и хака с pass.