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

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

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

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

РКН: clck.ru/3G6pBb
加入频道
⏱️ Как быстро измерить время выполнения кода

Иногда нужно понять, сколько времени занимает выполнение куска кода. В боевых условиях используют 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 часов на решение
🧠 Получение имени переменной как строки

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

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

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

Сегодня практически любой бизнес не может работать без сбора, обработки, анализа данных — всё это подвиды задач Data Scientist. Чем крупнее компания, тем сильнее различаются задачи, стоящие перед этими специалистами, а также заработная плата.

С целью удовлетворить растущий мировой спрос на этих специалистов онлайн-университет Skillfactory создал бесплатный "мини-курс дата-сайентист". Он нацелен на обучение начинающих специалистов в кратчайшие сроки.

Попробовать мини-курс, и выйти на стартовый доход 100 тыс.руб.

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