Python Academy
10.7K subscribers
505 photos
75 videos
584 links
🐍 Прокачайте свои навыки в Python без лишних слов и бубна. Нет туториалов - только чистый код!
Download Telegram
🧠 Получение имени переменной как строки

В некоторых ситуациях, особенно при логировании или отладке, бывает удобно получить имя переменной как строку. В Python это можно сделать через модуль inspect.

Функция var_name смотрит в локальные переменные вызывающей функции и ищет переменную, значение которой совпадает с переданным объектом.

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

Python Academy
👍10👏108
🚀 Быстрое сравнение версий как в pip

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

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

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

Python Academy
🎉13👎6👏51
🧊 Словарь с "молчаливыми" значениями — defaultdict

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

🎯 Итог
defaultdict избавляет от лишних проверок и упрощает код, особенно когда нужно агрегировать или группировать данные.

Python Academy
🤩12🔥8😁8🤗5
🧪 Проверка аргументов функций — assert как мини-валидация

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

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

Python Academy
🎉159🔥8
🧵 Ускорение кода с помощью functools.cache

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

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

Python Academy
🔥11🤗9👍6🤩4🎉3
🛑 Безопасное закрытие ресурсов с contextlib.suppress

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

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

Python Academy
🤩18🔥4👎3🤗2😁1
🧪 Простое логирование времени выполнения кода с timeit

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

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

Python Academy
🤩15🤗11🔥6👍21😁1
🧩 Используй functools.lru_cache для кэширования результатов

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

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

Python Academy
😁159👍6
Распаковка элементов с помощью *_

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

`Отлично подходит для игнорирования ненужных данных.

Python Academy
11👍6
🕵️ Удобный способ подавить ошибки через contextlib.suppress

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

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

Python Academy
😁6👎4👍2🤗2
📌 Быстрое сравнение объектов через dataclasses

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

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

Python Academy
🤩8🔥72👍1
🧪 Проверка типов во время разработки с typing.assert_type

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

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

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

Python Academy
🤩10👎2👏2🤗2
🧵 Ускорение многозадачности с concurrent.futures.ThreadPoolExecutor

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

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

Python Academy
👏9🔥7🤗5🎉3
🧼 Удаление дубликатов из вложенных списков

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

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

Python Academy
😁8🤗7🤩32
🧪 Быстрая проверка скорости кода с timeit

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

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

Python Academy
👏12
🧼 Чистое логирование без print — используй logging

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

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

Python Academy
😁9👍7🤩1
🧠 Проверка типов во время разработки — mypy

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

🎯 Итог
mypy помогает ловить ошибки типов на раннем этапе и делает твой код надежнее. Особенно полезен в больших проектах с командами.

Python Academy
🔥82👏1
🪄 Ускорение сериализации с orjson

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

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

Python Academy
😁14
🗺 В Нижегородской области зарегистрировано более 132 000 МСП. Наиболее конкурентные сферы региона — торговля, рестораны и услуги.

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

Так, по данным Яндекса, 63% людей изучают информацию в интернете перед покупкой, почти 1/3 пользователей Яндекс Карт заходят в приложение ежедневно, 2/3 - несколько раз в неделю.

С помощью карточки компании и работы с отзывами начинающие предприниматели могут выстроить доверие с клиентами. А еще понять, что востребовано ими в конкретных локациях через Геоаналитику. Так, например, Речной вокзал — в топе по запросам на рестораны и бары.

Об особенностях использования геосервисов нижегородцами для бизнеса пишет Артём Савинов, руководитель проектов в Яндекс Картах.

Python Academy
🔥12
Объединение списка строк в одну строку

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

Python Academy
7