Однажды в трендах
133K subscribers
2.61K photos
88 videos
643 links
Что-то на айтишном про айти.

Сотрудничество - @alivian

Канал сотрудничает с рекламным сервисом @Tgpodbor_official

РКН: clck.ru/3G6pBb
Download Telegram
🪄 Ускорение сериализации с orjson

Обычный json модуль в Python медленный. Если тебе нужно быстро сериализовать/десериализовать данные — используй orjson, он в разы быстрее и поддерживает datetime из коробки.

🎯 Итог
orjson — отличный выбор, если тебе важна производительность при работе с JSON. Он быстрее стандартного модуля и проще в использовании.
Объединение списка строк в одну строку

Метод .join() объединяет элементы списка в одну строку, используя заданный разделитель (в примере — пробел " ").
Плюсы: Быстрее и эффективнее, чем перебор в цикле Гибкость: можно выбрать любой разделитель (например, ",".join() для CSV)
Осторожно: Все элементы списка должны быть строками, иначе будет ошибка.
🧼 Безопасное удаление ключа из словаря

Обычно при удалении ключа из словаря с del можно случайно получить KeyError, если ключа нет. А вот dict.pop() с дефолтным значением — безопаснее и удобнее!

🎯 Итог
Используй dict.pop(key, default) — безопасный способ удалить ключ и получить значение, если оно нужно. Уберегаешься от KeyError и пишешь устойчивый код.
🧊 Безопасное извлечение значений из словаря

Иногда нужно получить значение из словаря, но ключ может отсутствовать. Вместо лишних if — используй .get() с дефолтным значением.

🎯 Итог
Метод .get() делает код чище и безопаснее, особенно при работе с необязательными данными.
🛑 Прерывание цикла for с else

Мало кто знает, но for и while в Python могут иметь else. Этот else сработает только если цикл не был прерван через break. Удобно, когда нужно узнать, завершился ли цикл «естественно».

🎯 Итог
Конструкция for/else помогает элегантно отличить «успешный» проход по циклу от прерывания. Полезно при поиске, проверках и валидации!
🧊 setdefault() для упрощения работы со словарями

Иногда нужно добавлять значения в словарь списков. Можно проверять наличие ключа вручную, а можно использовать setdefault().

🎯 Итог
Метод setdefault() избавляет от лишней проверки ключей и помогает лаконично группировать данные в словарях.
🐍 Как элегантно "перевернуть" словарь

Иногда нужно поменять местами ключи и значения в словаре. Это можно сделать в одну строчку с помощью генератора словаря.

🎯 Итог
Инвертирование словаря — это просто и читаемо с генератором. Но помни: значения должны быть уникальны и хэшируемы, чтобы не потерять данные!
Использование list comprehension для фильтрации и преобразования данных

List comprehension в Python предоставляет лаконичный способ создания списков, позволяя не только итерировать, но и фильтровать и преобразовывать данные в одной строке. Это улучшает читаемость кода и уменьшает его объем.

Использование list comprehension позволяет создавать списки с фильтрацией и преобразованием данных в одной строке, что делает код более лаконичным, эффективным и удобочитаемым.
🧭 Как задать тайм-аут для любой функции

Иногда нужно ограничить время выполнения функции, особенно если она может "зависнуть". Для этого можно использовать concurrent.futures и ThreadPoolExecutor.

🎯 Итог
Такой приём позволяет безопасно завершать зависающие операции, не блокируя основной поток. Отлично подходит для сетевых вызовов, парсинга и других непредсказуемых задач.
👀 Подсмотреть, как работают бэкендеры в прямом эфире

5 июля пройдет Яндекс 2718 — разбор сложных архитектурных задач с участием топовых разработчиков Яндекса.

Как это работает:
— участники предлагают задачи по проектированию backend-сервисов;
— эксперты выбирают самые интересные и нетривиальные кейсы;
— разработчики из Карт, Поиска, Автономного транспорта и Рекламы решают их в прямом эфире.

Чтобы попасть на эфир нужно посмотреть требования к задачам и отправить свою. Авторы принятых вариантов получат приглашение приехать на эфир лично или подключиться онлайн. А еще можно зарегистрироваться и прийти на трансляцию за вдохновением. Все о задачах и регистрации — здесь.
Использование defaultdict для работы со словарями

При работе со словарями часто возникает необходимость инициализировать значения по умолчанию, чтобы избежать ошибок при попытке доступа к несуществующим ключам. В таких случаях полезно использовать defaultdict из модуля collections.

Использование defaultdict упрощает код и избавляет от необходимости вручную проверять существование ключей в словаре, делая его более читаемым и эффективным.
🧼 Удаление дубликатов, сохраняя порядок

Стандартный set() удаляет дубликаты, но не сохраняет порядок. Чтобы сохранить порядок элементов, можно использовать dict.fromkeys().

🎯 Итог
dict.fromkeys() — простой и читаемый способ удалить дубликаты из списка, сохранив порядок появления. Работает быстро и не требует сторонних библиотек.
🔁 Повтор последнего результата в Python REPL

Если работаешь в интерактивном режиме Python (REPL), тебе не обязательно каждый раз сохранять результат в переменную — предыдущий результат всегда доступен через _.

🎯 Итог
Символ _ в интерактивной консоли Python хранит результат последнего выражения — удобно для быстрых вычислений и экспериментов без создания переменных.
🧪 Быстрая проверка производительности кода

Иногда хочется быстро узнать, сколько времени занимает выполнение участка кода. Можно использовать timeit прямо из интерпретатора — быстро и без импорта в файл.

🎯 Итог
Модуль timeit — отличный способ измерить время выполнения кода без лишнего шума. Особенно полезно при оптимизации.
🧪 Проверка существования атрибута без try/except

Иногда нужно понять, есть ли у объекта нужное свойство, и не хочется использовать try/except. В этом случае поможет встроенная функция hasattr().

🎯 Итог
Функция hasattr() позволяет лаконично проверить наличие атрибута у объекта — читаемо и без лишних конструкций.
📌 Объединение словарей без update()

Нужно быстро объединить два словаря, не изменяя исходные? Используй оператор |, начиная с Python 3.9.

🎯 Итог
Оператор | объединяет словари в один, не изменяя оригиналы. Это удобно, читаемо и декларативно.
🧊 Заморозка dataclass с frozen=True

Хочешь сделать неизменяемый объект — как namedtuple, но с преимуществами dataclass? Просто добавь frozen=True.

🎯 Итог
frozen=True превращает dataclass в неизменяемый и хешируемый объект. Отлично для безопасного и предсказуемого кода.
🧪 Упрощённая проверка аргументов через __post_init__ в dataclass

Иногда тебе нужно добавить валидацию данных при создании объекта dataclass. Вместо написания кастомного init, просто используй post_init!

🎯 Итог
post_init — отличный способ добавить проверку инициализации в dataclass, не нарушая автоматические преимущества этого декоратора.
🧵 contextlib.suppress — элегантное подавление исключений

Иногда нужно проигнорировать определённое исключение, но писать try/except кажется избыточным. В этом случае поможет contextlib.suppress.

📌 Это удобно при удалении временных файлов, работе с кэшем и т.п., где FileNotFoundError, например, — не критичен.

🎯 Итог
contextlib.suppress делает код чище, устраняя лишние try/except блоки, если ты сознательно игнорируешь конкретное исключение.
🪄 pathlib вместо os.path — чище и удобнее работа с путями

Работа с файлами через os.path часто громоздка. Вместо этого можно использовать модуль pathlib, который предоставляет объектно-ориентированный и читаемый API.

🎯 Итог
pathlib — современная замена os.path, делающая работу с путями проще, нагляднее и безопаснее.