Python School
81.7K subscribers
2.43K photos
7 videos
563 links
Уроки по Python, которые упростят вам жизнь. Без идиотских туториалов.

Наши мемы для программистов: @conhum

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

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

РКН: clck.ru/3G6pBb
加入频道
🚀 Быстрое сравнение версий как в pip

Когда нужно сравнить версии вроде '1.2.10' и '1.2.3', строковое сравнение не работает как надо. Но Python умеет это элегантно через packaging.version.

Библиотека packaging знает, как правильно сравнивать версии, в том числе с alpha, beta, rc и прочими дополнениями. Она используется, например, в pip.

🎯 Итог
packaging.version.parse — надёжный способ сравнивать версии, как это делает Python Package Index. Удобно для проверок в CLI, апдейтах и условиях совместимости.
🧊 Словарь с "молчаливыми" значениями — defaultdict

Когда работаешь со словарём, часто нужно сначала проверять, есть ли ключ. С defaultdict от collections это делается автоматически.

🎯 Итог
defaultdict избавляет от лишних проверок и упрощает код, особенно когда нужно агрегировать или группировать данные.
🧪 Проверка аргументов функций — assert как мини-валидация

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

🎯 Итог
assert — быстрый способ «подстелить соломку» и отлавливать очевидные ошибки ещё до выполнения основного тела функции. Особенно полезно в прототипах и тестах.
🧵 Ускорение кода с помощью functools.cache

Когда функция вызывается часто с одними и теми же аргументами (например, при рекурсии), можно использовать кэширование результатов с помощью декоратора @cache.

🎯 Итог
@cache (или @lru_cache) позволяет многократно ускорить повторяющиеся вычисления без изменения логики — просто добавь декоратор.
🛑 Безопасное закрытие ресурсов с contextlib.suppress

Иногда нужно проигнорировать конкретные ошибки, не загромождая код try/except-блоками. contextlib.suppress делает это изящно.

🎯 Итог
contextlib.suppress помогает лаконично и безопасно игнорировать конкретные исключения, не засоряя код лишней обработкой.
🧪 Простое логирование времени выполнения кода с timeit

Нужно быстро узнать, сколько времени занимает участок кода? Не нужно писать таймеры вручную — есть timeit.

🎯 Итог
Модуль timeit — удобный способ измерить производительность кода без лишней возни с time. Особенно полезен при сравнении разных реализаций.
🧩 Используй functools.lru_cache для кэширования результатов

Если у тебя есть функция, которую вызывают с одними и теми же аргументами, а её выполнение ресурсоёмкое — можно автоматически кэшировать её результат с помощью lru_cache.

🎯 Итог
lru_cache автоматически сохраняет результаты вызовов функции и экономит ресурсы при повторных вызовах. Особенно полезно для рекурсивных и часто вызываемых функций.
Распаковка элементов с помощью `*_

Если вам нужно проигнорировать некоторые значения при распаковке, используйте *_

Отлично подходит для игнорирования ненужных данных.
Если у вас есть смартфон или ПК, вы обязаны знать об этом: всю рекламу на смартфоне можно отключить. Ни на сайтах, ни в приложениях ее не будет.

Вся инфа о том, как это сделать и другая полезная информация о кибер безопасности собрана в Технолавке. Это номер один канал про приватность, слежку в Интернете и способы защититься от нее. Также внутри: секретные фишки соцсетей, малоизвестные сервисы и полезные лайфхаки.

Например, вы знали, что можно в два клика защититься от спама и не выдать свой номер рандомному гику? А с Технолавкой сможете не только это.
🕵️ Удобный способ подавить ошибки через contextlib.suppress

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

🎯 Итог
suppress делает код чище, когда нужно спокойно обойтись без конкретных исключений. Особенно полезно в служебных операциях типа удаления или проверки.
📌 Быстрое сравнение объектов через dataclasses

Если тебе нужно сравнивать экземпляры классов по значениям, а не по идентификаторам, используй @dataclass — это избавит от ручной реализации eq.

🎯 Итог
@dataclass не только сокращает шаблонный код, но и позволяет автоматически сравнивать объекты по значению их полей — удобно и читаемо.
🧪 Проверка типов во время разработки с typing.assert_type

Иногда полезно явно указать ожидаемый тип переменной — особенно при сложных аннотациях или когда IDE не даёт точной подсказки. Python 3.11+ предоставляет утилиту typing.assert_type для таких целей.

Во время выполнения assert_type не делает ничего — он нужен только для анализа типизации инструментами, как mypy или Pyright.

🎯 Итог
assert_type помогает быть уверенным, что типы совпадают с ожиданиями, и делает код более безопасным без влияния на производительность.
🧵 Ускорение многозадачности с concurrent.futures.ThreadPoolExecutor

Когда тебе нужно выполнить несколько I/O-зависимых задач (например, запросы к API или чтение файлов), но ты не хочешь возиться с asyncio, можно использовать ThreadPoolExecutor — просто и эффективно.

🎯 Итог
ThreadPoolExecutor — мощный способ ускорить I/O-операции с минимальными усилиями. Особенно удобен, если не хочется переписывать проект под asyncio.
🧼 Удаление дубликатов из вложенных списков

Иногда нужно удалить дубликаты из списка списков — но set тут не работает напрямую, ведь списки — неизменяемые. Есть простое решение!

🎯 Итог
Для удаления дубликатов из списка списков — конвертируй во tuple, используй set, потом верни всё обратно. Быстро и без лишних циклов.
🧪 Быстрая проверка скорости кода с timeit

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

🎯 Итог
Используй timeit, чтобы быстро сравнить производительность разных решений. Особенно полезно при выборе между похожими по смыслу, но разными по скорости подходами.
🧼 Чистое логирование без print — используй logging

Вместо print() лучше сразу привыкай к модулю logging — он гибкий и профессиональный.

🎯 Итог
Модуль logging — must-have для любого серьезного Python-кода. Он делает отладку и сопровождение кода намного приятнее и чище.
Изучи любой IT-курс и не только с помощью личного ИИ-наставника, чтобы не тратить сотни тысяч рублей на профессию.

Вместо траты двух лет на обучение в онлайн-университете, используйте современные методы с PAI. Ваш ИИ-наставник составит максимально эффективный и простой для освоения курс на любую тему по вашим запросам.

Почему PAI прокачивает быстрее:

— Слушай теорию как подкаст или листай текстом
— Интерактивные задачи и мини-проекты
— Подстраивается под твой уровень — от новичка до опытного разработчика.
— Хочешь «Парсер сайтов» или «FastAPI для джунов»? Платформа соберёт программу под твой запрос.
— Подписка вместо дорогого курса

Переходи по ссылке, пробуй 3 дня бесплатно и убедись сам!

Реклама. Информация о рекламодателе по ссылкам в посте.
🧠 Проверка типов во время разработки — mypy

Пайтон — динамический язык, но ты можешь использовать статическую проверку типов с помощью mypy для улавливания ошибок до запуска кода.

🎯 Итог
mypy помогает ловить ошибки типов на раннем этапе и делает твой код надежнее. Особенно полезен в больших проектах с командами.
🔥Data Science — ваш билет в топ-10% IT по зарплатам. Но как войти без ошибок?

Сегодня даже средний бизнес не может обойтись без Data Science — прогнозирование, автоматизация решений, работа с нейросетями. Но чем крупнее компания, тем выше требования... и зарплаты.

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

☑️ День 1: Вы сразу пишете код на Python — не теория, а разбор реального датасета.
☑️ День 2: Строите ML-модель для прогнозирования — такую же, как используют в Сбере и Яндекс.
☑️ День 3: Разбираете ваш персональный сценарий в DS: анализ, ML или инженерия?

Запускайте курс.

🎁 После мини-курса у вас будет 3 проекта в портфолио, и вы получите в подарок: "Гайд «25 нейросетей для работы» (включая ChatGPT и Midjourney)". А также скидку 45% на полный курс, переходите по ссылке и научитесь ТОП-профессии будущего.

Реклама. Информация о рекламодателе по ссылкам в посте.
🪄 Ускорение сериализации с orjson

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

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

Онлайн-школа участник проекта "Сколково" создала уникальный инструмент профориентации, который раскроет ваш потенциал. Простой тест с вариантами ответа, менее чем из 20 вопросов.

В конечный результат вошли только самые востребованные профессии для 2025 года, большинство специальностей из сферы IT и Дизайна, именно в них на сегодня наибольшие доходы.

Переходите по специальной ссылке, получите карьерную консультацию в подарок, и разберите индивидуально ваш комфортный переход в новую профессию.

Реклама. Информация о рекламодателе по ссылкам в посте.