Python обучающий – Telegram
Python обучающий
58.6K subscribers
838 photos
7 videos
405 links
Здесь есть всё, чтобы упростить изучение Python. Без воды и сложных терминов.

Сотрудничество: @bateman24, @justcage

Работаем с @Tgpodbor_official

Ссылка РНК: https://clck.ru/3Ghwjd
Download Telegram
🧹 Удаление дубликатов из списка с сохранением порядка

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

🎯 Итог

dict.fromkeys позволяет убрать дубликаты и сохранить порядок элементов в одну строчку.
Измеряем время выполнения кода без сторонних библиотек

Когда нужно быстро узнать, сколько занял кусок кода, можно воспользоваться модулем time.

🎯 Итог

time.perf_counter() — самый точный встроенный способ измерить время выполнения кода в Python.
🧠 Извлечение уникальных значений из списка словарей

Когда у тебя есть список словарей, и нужно получить все уникальные значения по определённому ключу — есть лаконичный способ!

🎯 Итог

Используй set comprehension, чтобы быстро и элегантно получать уникальные значения из списков словарей.
⚙️ Использование contextlib.suppress для игнорирования ошибок

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

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

Если нужно ускорить выполнение нескольких независимых операций (например, сетевых запросов или чтения файлов) — можно использовать потоки из concurrent.futures.

🎯 Итог
ThreadPoolExecutor позволяет легко запускать несколько задач одновременно, экономя время на операциях ввода-вывода.
🧠 Измеряем время выполнения кода с помощью contextmanager

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

🎯 Итог

Контекстный менеджер делает измерение времени элегантным и удобным — особенно при профилировании кода.
🕵️‍♂️ Измеряем время выполнения кода одной строкой

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

🎯 Итог
Используйте time.perf_counter() для точного измерения времени выполнения кода — он лучше подходит для микробенчмарков, чем time.time().
🔄 Меняем местами значения без временной переменной

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

🎯 Итог

Python позволяет обменивать значения напрямую через множественное присваивание — без временных переменных и лишнего кода. Лаконично и понятно!
Проверяем запуск скрипта напрямую: if __name__ == "__main__"

Иногда нужно, чтобы часть кода выполнялась только при прямом запуске файла, а не при его импорте в другой модуль. Новички часто удивляются, почему функции выполняются «сами». Python решает это с помощью специальной проверки.

🎯 Итог
Используйте if name == "__main__" чтобы управлять тем, выполняется ли код при прямом запуске или же файл лишь импортируется как модуль. Это делает программы чище и удобнее для повторного использования.
Примите участие в турнире для школьников «Решись!»

Турнир «Решись!» — онлайн-состязание для школьников 10—11-х классов по четырем направлениям: разработке, искусственному интеллекту, бизнес-аналитике, а также дизайну.

«Решись!» для школьников — это возможность:
— получить грант на обучение в Центральном университете до 100% и другие призы;
— пополнить портфолио;
— проверить знания в ИИ, разработке, дизайне и бизнес-аналитике;
— найти новых знакомых в чате турнира.

Для участия вы можете выбрать как одно направление, так и все четыре — решать вам.

🕒Регистрация продлится до 12 ноября, 16:00 мск, как и отборочный тур.

👉Подробности о турнире и регистрация на сайте
Безопасные параметры в SQL через SQLAlchemy

Новички часто формируют SQL строкой, подставляя значения через f-string → это приводит к SQL-инъекциям. Используйте bind-параметры (:param) — SQLAlchemy сам экранирует значения, защищая запрос.

Не формируйте SQL вручную через f-string.
Используйте :param + словарь → и сразу получаете безопасность и читаемость запроса.
Автоматическое создание таблиц из моделей SQLAlchemy

Иногда нужно быстро поднять базу данных на основе ORM-моделей, не создавая миграции вручную.

С помощью Base.metadata.create_all() можно автоматически создать все таблицы, определённые в ваших моделях, прямо в базе данных. Это особенно удобно для тестов или прототипов.

🎯 Итог:
Base.metadata.create_all() позволяет мгновенно создать все таблицы из моделей без Alembic — идеально для тестов, демо и начальной настройки проекта.
Быстрое измерение времени выполнения куска кода

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

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

🎯 Итог:
time.perf_counter() — самый простой способ быстро понять, где код тормозит, без сторонних библиотек и сложных инструментов.
Распаковка (Unpacking)

Распаковка позволяет извлекать элементы из коллекций в отдельные переменные за одну операцию.

Зачем нужно?

Убирает лишние строки кода

Делает присваивание более читаемым

Идеально для обработки возвращаемых значений функций
Мессенджер MAX теперь полностью совместим с ОС Аврора отечественной разработки. Это отличная новость для тех, кому не обойтись без смартфонов и планшетов с Авророй на своей работе — сотрудников РЖД, Аэрофлота, Интер РАО, Ростелеком и Почты России. Речь о сотнях тысяч пользователей.

Можно смело констатировать: MAX стал ещё доступнее. Хотя нельзя сказать, что национальный мессенджер испытывает дефицит новых пользователей. В ноябре общее число зарегистрированных номеров в MAX превысило 55 млн.
Удобный вывод SQL-запросов прямо в консоль с форматированием

Когда вы работаете с SQLAlchemy, отладка запросов иногда превращается в хаос — SQL выводится без форматирования, читать трудно, ошибки искать ещё труднее. Python позволяет быстро превратить любой запрос в читабельный SQL с подставленными параметрами.

🎯 Итог:
Этот приём позволяет видеть SQL-запросы в чистом виде, как в DBeaver, и экономит массу времени при отладке и оптимизации.
Быстрое измерение времени выполнения кода без time и декораторов

Иногда нужно прикинуть, сколько реально занимает выполнение фрагмента кода — но не хочется подключать сложные профилировщики. Python даёт простой и элегантный способ измерить время прямо “на лету” с помощью time.perf_counter().

🎯 Итог:
Этот метод позволяет замерять время выполнения любых операций в одном месте, без декораторов и внешних библиотек, и идеально подходит для быстрой диагностики производительности.
Как красиво логировать объекты без ручного форматирования

Когда нужно записать в лог сложный объект (например, dict с вложенными структурами), обычный print() делает кашу. А logging без форматирования выглядит громоздко. Есть быстрый способ — использовать pprint прямо внутри логирования.

Хотите логировать сложные структуры красиво и читаемо, но не хотите вручную форматировать JSON или писать многострочные print(). Используйте pprint.pformat() — он превращает объект в красиво отформатированную строку, которая идеально ложится в лог.
Получаем значения из словаря без KeyError

Новички часто сталкиваются с ошибкой KeyError, когда ключа в словаре нет. Вместо проверки через if можно использовать встроенный и безопасный способ.

Используй метод dict.get() — он возвращает значение по ключу или None (или значение по умолчанию), если ключ отсутствует.

🎯 Итог:
dict.get() делает код короче, безопаснее и избавляет от лишних проверок на существование ключей.
Аккуратно игнорируем ошибки без try/except

Иногда ошибка — это нормальное поведение программы. Например, файл может не существовать, ключ в кеше — отсутствовать, а удаление временного ресурса — падать. Новички обычно оборачивают такие места в громоздкий try/except, из-за чего код становится шумным и хуже читается.

В Python есть элегантное решение — contextlib.suppress. Он позволяет явно указать, какие исключения нужно проигнорировать, не скрывая логику и не перехватывая всё подряд.

🎯 Итог:
contextlib.suppress делает код чище и честнее: вы явно показываете, какую ошибку считаете допустимой, без лишнего try/except и хака с pass.