Использование list comprehension для фильтрации и преобразования данных
List comprehension в Python предоставляет лаконичный способ создания списков, позволяя не только итерировать, но и фильтровать и преобразовывать данные в одной строке. Это улучшает читаемость кода и уменьшает его объем.
Использование list comprehension позволяет создавать списки с фильтрацией и преобразованием данных в одной строке, что делает код более лаконичным, эффективным и удобочитаемым.
List comprehension в Python предоставляет лаконичный способ создания списков, позволяя не только итерировать, но и фильтровать и преобразовывать данные в одной строке. Это улучшает читаемость кода и уменьшает его объем.
Использование list comprehension позволяет создавать списки с фильтрацией и преобразованием данных в одной строке, что делает код более лаконичным, эффективным и удобочитаемым.
🧭 Как задать тайм-аут для любой функции
Иногда нужно ограничить время выполнения функции, особенно если она может "зависнуть". Для этого можно использовать concurrent.futures и ThreadPoolExecutor.
🎯 Итог
Такой приём позволяет безопасно завершать зависающие операции, не блокируя основной поток. Отлично подходит для сетевых вызовов, парсинга и других непредсказуемых задач.
Иногда нужно ограничить время выполнения функции, особенно если она может "зависнуть". Для этого можно использовать concurrent.futures и ThreadPoolExecutor.
🎯 Итог
Такой приём позволяет безопасно завершать зависающие операции, не блокируя основной поток. Отлично подходит для сетевых вызовов, парсинга и других непредсказуемых задач.
👀 Подсмотреть, как работают бэкендеры в прямом эфире
5 июля пройдет Яндекс 2718 — разбор сложных архитектурных задач с участием топовых разработчиков Яндекса.
Как это работает:
— участники предлагают задачи по проектированию backend-сервисов;
— эксперты выбирают самые интересные и нетривиальные кейсы;
— разработчики из Карт, Поиска, Автономного транспорта и Рекламы решают их в прямом эфире.
Чтобы попасть на эфир нужно посмотреть требования к задачам и отправить свою. Авторы принятых вариантов получат приглашение приехать на эфир лично или подключиться онлайн. А еще можно зарегистрироваться и прийти на трансляцию за вдохновением. Все о задачах и регистрации — здесь.
5 июля пройдет Яндекс 2718 — разбор сложных архитектурных задач с участием топовых разработчиков Яндекса.
Как это работает:
— участники предлагают задачи по проектированию backend-сервисов;
— эксперты выбирают самые интересные и нетривиальные кейсы;
— разработчики из Карт, Поиска, Автономного транспорта и Рекламы решают их в прямом эфире.
Чтобы попасть на эфир нужно посмотреть требования к задачам и отправить свою. Авторы принятых вариантов получат приглашение приехать на эфир лично или подключиться онлайн. А еще можно зарегистрироваться и прийти на трансляцию за вдохновением. Все о задачах и регистрации — здесь.
Использование defaultdict для работы со словарями
При работе со словарями часто возникает необходимость инициализировать значения по умолчанию, чтобы избежать ошибок при попытке доступа к несуществующим ключам. В таких случаях полезно использовать defaultdict из модуля collections.
Использование defaultdict упрощает код и избавляет от необходимости вручную проверять существование ключей в словаре, делая его более читаемым и эффективным.
При работе со словарями часто возникает необходимость инициализировать значения по умолчанию, чтобы избежать ошибок при попытке доступа к несуществующим ключам. В таких случаях полезно использовать defaultdict из модуля collections.
Использование defaultdict упрощает код и избавляет от необходимости вручную проверять существование ключей в словаре, делая его более читаемым и эффективным.
🧼 Удаление дубликатов, сохраняя порядок
Стандартный set() удаляет дубликаты, но не сохраняет порядок. Чтобы сохранить порядок элементов, можно использовать dict.fromkeys().
🎯 Итог
dict.fromkeys() — простой и читаемый способ удалить дубликаты из списка, сохранив порядок появления. Работает быстро и не требует сторонних библиотек.
Стандартный set() удаляет дубликаты, но не сохраняет порядок. Чтобы сохранить порядок элементов, можно использовать dict.fromkeys().
🎯 Итог
dict.fromkeys() — простой и читаемый способ удалить дубликаты из списка, сохранив порядок появления. Работает быстро и не требует сторонних библиотек.
🔁 Повтор последнего результата в Python REPL
Если работаешь в интерактивном режиме Python (REPL), тебе не обязательно каждый раз сохранять результат в переменную — предыдущий результат всегда доступен через _.
🎯 Итог
Символ _ в интерактивной консоли Python хранит результат последнего выражения — удобно для быстрых вычислений и экспериментов без создания переменных.
Если работаешь в интерактивном режиме Python (REPL), тебе не обязательно каждый раз сохранять результат в переменную — предыдущий результат всегда доступен через _.
🎯 Итог
Символ _ в интерактивной консоли Python хранит результат последнего выражения — удобно для быстрых вычислений и экспериментов без создания переменных.
🧪 Быстрая проверка производительности кода
Иногда хочется быстро узнать, сколько времени занимает выполнение участка кода. Можно использовать timeit прямо из интерпретатора — быстро и без импорта в файл.
🎯 Итог
Модуль timeit — отличный способ измерить время выполнения кода без лишнего шума. Особенно полезно при оптимизации.
Иногда хочется быстро узнать, сколько времени занимает выполнение участка кода. Можно использовать timeit прямо из интерпретатора — быстро и без импорта в файл.
🎯 Итог
Модуль timeit — отличный способ измерить время выполнения кода без лишнего шума. Особенно полезно при оптимизации.
🧪 Проверка существования атрибута без try/except
Иногда нужно понять, есть ли у объекта нужное свойство, и не хочется использовать try/except. В этом случае поможет встроенная функция hasattr().
🎯 Итог
Функция hasattr() позволяет лаконично проверить наличие атрибута у объекта — читаемо и без лишних конструкций.
Иногда нужно понять, есть ли у объекта нужное свойство, и не хочется использовать try/except. В этом случае поможет встроенная функция hasattr().
🎯 Итог
Функция hasattr() позволяет лаконично проверить наличие атрибута у объекта — читаемо и без лишних конструкций.
🧪 Упрощённая проверка аргументов через __post_init__ в dataclass
Иногда тебе нужно добавить валидацию данных при создании объекта dataclass. Вместо написания кастомного init, просто используй post_init!
🎯 Итог
post_init — отличный способ добавить проверку инициализации в dataclass, не нарушая автоматические преимущества этого декоратора.
Иногда тебе нужно добавить валидацию данных при создании объекта dataclass. Вместо написания кастомного init, просто используй post_init!
🎯 Итог
post_init — отличный способ добавить проверку инициализации в dataclass, не нарушая автоматические преимущества этого декоратора.
🧵 contextlib.suppress — элегантное подавление исключений
Иногда нужно проигнорировать определённое исключение, но писать try/except кажется избыточным. В этом случае поможет contextlib.suppress.
📌 Это удобно при удалении временных файлов, работе с кэшем и т.п., где FileNotFoundError, например, — не критичен.
🎯 Итог
contextlib.suppress делает код чище, устраняя лишние try/except блоки, если ты сознательно игнорируешь конкретное исключение.
Иногда нужно проигнорировать определённое исключение, но писать try/except кажется избыточным. В этом случае поможет contextlib.suppress.
📌 Это удобно при удалении временных файлов, работе с кэшем и т.п., где FileNotFoundError, например, — не критичен.
🎯 Итог
contextlib.suppress делает код чище, устраняя лишние try/except блоки, если ты сознательно игнорируешь конкретное исключение.
🪄 pathlib вместо os.path — чище и удобнее работа с путями
Работа с файлами через os.path часто громоздка. Вместо этого можно использовать модуль pathlib, который предоставляет объектно-ориентированный и читаемый API.
🎯 Итог
pathlib — современная замена os.path, делающая работу с путями проще, нагляднее и безопаснее.
Работа с файлами через os.path часто громоздка. Вместо этого можно использовать модуль pathlib, который предоставляет объектно-ориентированный и читаемый API.
🎯 Итог
pathlib — современная замена os.path, делающая работу с путями проще, нагляднее и безопаснее.
🚨 contextlib.suppress() — элегантное игнорирование исключений
Иногда нужно просто "молча" игнорировать ошибку — например, если файл может не существовать. Вместо try/except, можно использовать contextlib.suppress().
🎯 Итог
contextlib.suppress() — читаемый и питоничный способ безопасно игнорировать ожидаемые ошибки без лишнего кода.
Иногда нужно просто "молча" игнорировать ошибку — например, если файл может не существовать. Вместо try/except, можно использовать contextlib.suppress().
🎯 Итог
contextlib.suppress() — читаемый и питоничный способ безопасно игнорировать ожидаемые ошибки без лишнего кода.
Использование defaultdict из модуля collections для работы с словарями
Модуль collections в Python включает в себя класс defaultdict, который позволяет создавать словари с значениями по умолчанию. Это особенно полезно, когда нужно инициализировать значения в словаре при первой встрече ключа, избавляясь от необходимости проверять наличие ключа и инициализировать его вручную.
Использование defaultdict из модуля collections позволяет упростить код и избежать распространенных ошибок, связанных с отсутствующими ключами в словарях, делая процесс инициализации значений более автоматизированным и удобным.
Модуль collections в Python включает в себя класс defaultdict, который позволяет создавать словари с значениями по умолчанию. Это особенно полезно, когда нужно инициализировать значения в словаре при первой встрече ключа, избавляясь от необходимости проверять наличие ключа и инициализировать его вручную.
Использование defaultdict из модуля collections позволяет упростить код и избежать распространенных ошибок, связанных с отсутствующими ключами в словарях, делая процесс инициализации значений более автоматизированным и удобным.
Визуализация сортировки с помощью matplotlib
Вы можете использовать библиотеку matplotlib для визуализации процесса сортировки в реальном времени. Это поможет лучше понять, как работают различные алгоритмы сортировки.
Этот лайфхак позволяет буквально "увидеть" работу алгоритма и может быть полезен для учебных целей или просто для интереса.
Вы можете использовать библиотеку matplotlib для визуализации процесса сортировки в реальном времени. Это поможет лучше понять, как работают различные алгоритмы сортировки.
Этот лайфхак позволяет буквально "увидеть" работу алгоритма и может быть полезен для учебных целей или просто для интереса.
🧠 dict.setdefault() — добавляем ключи без лишней проверки
Когда работаешь со словарями и нужно добавлять значения в списки по ключу, но есть более короткий способ — setdefault. Эта конструкция сразу создаёт список по ключу, если его нет, и добавляет значение — всё в одну строку.
🎯 Итог
setdefault() — отличный способ сократить код и избежать дублирования при работе со вложенными структурами данных.
Когда работаешь со словарями и нужно добавлять значения в списки по ключу, но есть более короткий способ — setdefault. Эта конструкция сразу создаёт список по ключу, если его нет, и добавляет значение — всё в одну строку.
🎯 Итог
setdefault() — отличный способ сократить код и избежать дублирования при работе со вложенными структурами данных.
🧼 Временное отключение вывода в консоль
Иногда сторонняя библиотека печатает слишком много в stdout, и вы хотите временно "заглушить" вывод. Вручную перенаправлять sys.stdout неудобно и небезопасно. Но есть элегантный способ.
🎯 Итог
Контекстный менеджер suppress_stdout помогает временно отключать вывод в консоль — полезно для подавления спама от сторонних библиотек или во время тестов.
Иногда сторонняя библиотека печатает слишком много в stdout, и вы хотите временно "заглушить" вывод. Вручную перенаправлять sys.stdout неудобно и небезопасно. Но есть элегантный способ.
🎯 Итог
Контекстный менеджер suppress_stdout помогает временно отключать вывод в консоль — полезно для подавления спама от сторонних библиотек или во время тестов.
📦 Динамический импорт модулей по имени
Иногда нужно импортировать модуль по его имени, известному только во время выполнения (например, загружать плагины). Вместо importlib.import_module можно сделать это более гибко и кратко.
🎯 Итог
С помощью importlib.import_module и getattr можно динамически загружать модули и функции по строковому имени — удобно для создания плагин-систем и расширяемых приложений.
Иногда нужно импортировать модуль по его имени, известному только во время выполнения (например, загружать плагины). Вместо importlib.import_module можно сделать это более гибко и кратко.
🎯 Итог
С помощью importlib.import_module и getattr можно динамически загружать модули и функции по строковому имени — удобно для создания плагин-систем и расширяемых приложений.