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

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

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

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

РКН: clck.ru/3G6pBb
加入频道
Массовая вставка данных без цикла

Вставлять много записей по одной — неэффективно. Лучше использовать метод executemany, который сразу выполнит множество вставок за один запрос.

🎯 Итог
executemany позволяет вставлять или обновлять множество записей за один запрос, экономя время и ресурсы.
🧵 Упрощаем цепочки if с помощью match-case

Иногда при проверке значения переменной мы пишем длинную цепочку if-elif-else. Это выглядит громоздко и сложно читается.

С Python 3.10 можно использовать конструкцию match-case, которая делает код компактнее и читабельнее — особенно при работе со строками, числом или даже структурами данных.

🎯 Итог
match-case — это элегантная альтернатива if-elif-else в Python 3.10+. Подходит для ветвлений по значениям, в том числе с распаковкой. Пиши чище, читай легче!
⏱️ Как быстро измерить время выполнения кода

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

🎯 Итог
time.perf_counter() — точный и удобный способ измерить время выполнения кода. Используй для быстрой диагностики производительности прямо в процессе разработки.
🔁 Как один раз инициализировать ресурс при первом использовании

Допустим, у тебя есть тяжёлая операция (например, подключение к БД, загрузка модели и т.д.), которую нужно выполнить только один раз при первом вызове. Для этого идеально подходит functools.lru_cache.

🎯 Итог
@lru_cache — простой способ ленивой инициализации: функция выполнится один раз, а результат будет использоваться повторно. Идеально для кэширования настроек, соединений и других «разовых» данных.
⛓️ Как объединять цепочки условий красиво и читаемо

Иногда логика с множеством if становится громоздкой. В таких случаях удобно использовать словарь как аналог switch-case.

🎯 Итог
Словарь заменяет кучу if-elif-else, делает код чище и облегчает добавление новых случаев. Особенно полезно, когда условия связаны с конкретными значениями (например, кодами, командами или ролями).
⏱️ Как замерить время выполнения кода элегантно

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

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

Часто нужно объединить два словаря, где значения из второго имеют приоритет. Это можно сделать просто и читаемо.

🎯 Итог
Синтаксис {**dict1, **dict2} объединяет словари, давая приоритет второму. Удобен для настройки конфигураций, параметров и всего, что связано с override'ами.
Быстрая проверка уникальности элементов в списке

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

🎯 Итог
Преобразование списка во множество — быстрый способ проверить уникальность: set автоматически убирает дубликаты. Особенно полезно при валидации данных.
Что, если вам прямо сейчас выдадут секрет мгновенного профессионального роста? Этот секрет — наш практический курс по топовым нейросетям!

И это не просто обещания. По данным исследования Resume Builder 49% компаний в настоящее время используют ChatGPT, 30% намерены делать это в будущем, 25% уже сэкономили с помощью этой технологии более 75 000 $.

Чем вам поможет курс 👇

🔵 Освоите 7 нейросетей.
🔵 Закрепите знания на практике, которая приближена к реальным задачам.
🔵 Получите доступ к чату с авторами курса.
🔵 Будете получать все обновления курса, потому что он останется у вас навсегда.

2 месяца учёбы достаточно, чтобы стать мастером топовых нейросетей и увеличить производительность работы в 10 раз. А также — выделиться на рынке труда.

Май возможностей: каждую неделю разыгрываем 2 MacBook!
Получите скидку до 60% на обучение и шанс выиграть крутой ноутбук!
Подробности по ссылке: https://epic.st/9pETA?erid=2VtzqxWc1mn

Реклама. ЧОУ ДПО «Образовательные технологии «Скилбокс (Коробка навыков)», ИНН: 9704088880
Используйте функцию enumerate для перебора элементов списка и их индексов

enumerate - это встроенная функция, которая принимает список и возвращает объект, который можно использовать в цикле for для перебора элементов списка и их соответствующих индексов.
Ограничение времени выполнения кода с signal

Когда нужно завершать долгие операции (например, при парсинге или работе с API), полезно уметь ставить таймаут на блок кода.

🎯 Итог
Модуль signal позволяет элегантно ограничивать время выполнения операций. Особенно полезен при работе с нестабильными внешними источниками или написании защищённых CLI-утилит. Работает только в UNIX-системах.
🧊 Глубокая заморозка объектов с types.MappingProxyType

Иногда нужно создать словарь, который нельзя изменить — например, для констант или конфигурации. Вместо копирования или заморозки вручную, можно использовать MappingProxyType.

🎯 Итог
MappingProxyType создаёт читаемую, но неизменяемую обёртку над словарём — отличный способ защитить данные от случайного изменения, особенно в конфигурациях и API-интерфейсах.
⚙️ Быстрое измерение времени выполнения кода с timeit

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

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

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

Без кэширования fibonacci(100) был бы крайне медленным из-за экспоненциальной сложности. С lru_cache результат каждого вызова сохраняется и переиспользуется.

🎯 Итог
@lru_cache — простой способ ускорить рекурсивные (и не только) функции, избежав повторных вычислений.
⏱️ Замер времени выполнения кода с timeit

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

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

🎯 Итог
timeit — отличный способ сравнивать производительность разных решений и выбирать самое быстрое.
This media is not supported in your browser
VIEW IN TELEGRAM
7–8 июня проводим Weekend Offer Analytics

Устроиться в Яндекс за выходные — реально. Ищем крутых аналитиков с опытом работы от 3 лет на Python, готовых работать в офисном или гибридном режиме.

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

Узнать подробности и зарегистрироваться.

Реклама. ООО "Яндекс". ИНН 7736207543
✉️ Распаковка аргументов с * и ** — элегантная передача параметров

Иногда нужно передать переменное количество аргументов в функцию или вызвать функцию с уже готовыми аргументами в виде кортежа или словаря. Python позволяет делать это красиво с помощью *args и **kwargs.

Это особенно удобно, если вы оборачиваете функции, строите декораторы или работаете с конфигами.

🎯 Итог
Использование * и ** позволяет гибко управлять аргументами и упрощает передачу данных в функции — лаконично и читаемо.
Какой у тебя склад ума: аналитик или творец?

Всего 10 вопросов — и ты узнаешь, в каком направлении сможешь раскрыть свой потенциал. А еще получишь подарок от Eduson — академии, которую выбирают топ-компании и 450 000+ студентов.

После теста мы пришлем:
— Персональный результат с разбором твоих сильных сторон.
— Промокод на обучение — если захочешь глубже прокачать навыки.

Кстати, в Eduson учат не только теории: там разбирают кейсы из Google, Яндекса и даже Гарварда. Но для начала — просто попробуй тест. Это интересно 😉

👉 Узнай себя лучше → Пройти тест
⏱️ Тайминг кода без сторонних библиотек

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

time.perf_counter() предоставляет наиболее точные замеры времени исполнения — идеально для бенчмаркинга.

🎯 Итог
С помощью time.perf_counter() можно легко измерять производительность кода без внешних зависимостей.
Mini-MBA по интернет-маркетингу — 6 уроков БЕСПЛАТНО!

Бесплатный курс премиум-качества по интернет-маркетингу — 6 уроков, 5,5 часов практики, доступ навсегда.

Научитесь запускать рекламу, продвигать стартапы и упаковывать бизнес так, чтобы клиенты сами шли к вам. Без воды, только рабочие схемы.

Это часть дипломной программы (64 практических задания, 4 месяца обучения), но прямо сейчас — ваш шанс оценить её без оплаты.

Забирайте 5,5 часов практики по ссылке.
Только 48 часов на решение