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

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

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

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

РКН: clck.ru/3G6pBb
加入频道
IPython

IPython — это ядро блокнотов Jupyter. Jupyter Notebook — это веб-приложение с открытым кодом, которое позволяет создавать и обмениваться документами с живым кодом, уравнениями, визуализациями и текстовыми описаниями.
Первые навыки геймдизайна за 4 дня — бесплатно

Как придумать игровую механику, от которой невозможно оторваться?

На бесплатном мини-курсе от Skillbox вы получите базовый навык геймдизайнеранаучитесь разбирать игровые механики на части и понимать, как создаются вовлекающие сценарии и игровые системы.
Это первый шаг, без которого не начинается ни одна серьёзная игра.

Ваша любимая игра когда-то началась с геймдизайна. Попробуйте сделать свою.

Пройдите мини-курс: https://go.avred.online/62837c5457d03fb0?erid=2VfnxxcSezk&m=1
И получите в подарок 5 чек-листов для начинающих геймдизайнеров
🧠 dict.setdefault() — добавляем ключи без лишней проверки

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

🎯 Итог
setdefault() — отличный способ сократить код и избежать дублирования при работе со вложенными структурами данных.
🧼 Временное отключение вывода в консоль

Иногда сторонняя библиотека печатает слишком много в stdout, и вы хотите временно "заглушить" вывод. Вручную перенаправлять sys.stdout неудобно и небезопасно. Но есть элегантный способ.

🎯 Итог
Контекстный менеджер suppress_stdout помогает временно отключать вывод в консоль — полезно для подавления спама от сторонних библиотек или во время тестов.
Бесплатный мини-курс: освой базу тестирования за 72 часа

Ты выполнишь 3 реальных задачи из жизни Junior QA — поиски багов вручную, и с помощью ПО. Получишь проекты в портфолио, значимые для будущего работодателя.

Как это работает?
1. Регистрируешься — это абсолютно бесплатно.
2. В течение трёх дней проходишь уроки от эксперта в удобное для себя время.
3. Получаешь консультацию по профессии, обучению и рынку.
4. Понимаешь, подходит ли тебе тестирование, как начать карьеру и как выгодно выделиться среди новичков.

Получи 4 гайда + 3 проекта в портфолио за 3 дня — успевай до 11 июля!
👉 Записаться бесплатно (осталось 12 мест).
📦 Динамический импорт модулей по имени

Иногда нужно импортировать модуль по его имени, известному только во время выполнения (например, загружать плагины). Вместо importlib.import_module можно сделать это более гибко и кратко.

🎯 Итог
С помощью importlib.import_module и getattr можно динамически загружать модули и функции по строковому имени — удобно для создания плагин-систем и расширяемых приложений.
🌱 Безопасный доступ к переменным окружения

Часто приходится использовать переменные окружения (например, токены или конфиги), но прямой доступ через os.environ может выбросить KeyError, если переменная не задана.

🎯 Итог
Используй os.getenv вместо os.environ[], чтобы избежать исключений при отсутствии переменной. Это безопаснее и позволяет задавать значения по умолчанию.
🧊 Кэширование медленных функций с @lru_cache

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

🎯 Итог
@lru_cache — простой способ кешировать результат функции и избежать повторных вычислений. Особенно полезен в задачах с рекурсией, API-запросами или обработкой данных.
🧹 Очистка текста с помощью str.translate и str.maketrans

Когда нужно быстро удалить нежелательные символы (например, знаки препинания) из строки, не нужно писать цикл — str.translate делает это мгновенно.

🎯 Итог
Сочетание str.translate и str.maketrans — суперэффективный способ удаления символов из строки без регулярных выражений. Удобно, читаемо и быстро!
🔐 Безопасная подстановка значений в SQL — не через f-строки!

Никогда не вставляй пользовательские данные напрямую в SQL-запросы. Используй параметризацию — это защищает от SQL-инъекций и делает код надёжнее.
Резервирование символов

С помощью операторов > / < / ^ вы можете добавлять выходному значению символы, к примеру, облегчающие поиск среди других выходных значений.

Как видно в сниппете, < добавит символы после, > – до, а ^ – окружит с двух сторон.
🐍 Условное присваивание с оператором or

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

🎯 Итог
Оператор or — удобный способ задать значение по умолчанию, когда переменная может быть пустой, None, 0 или ''. Упрощает код и делает его чище.
🔁 Используй enumerate вместо счётчиков вручную

Когда нужно одновременно итерироваться по элементам и знать их индекс — не нужно делать это вручную!

🎯 Итог
enumerate — твой друг при работе с индексами в цикле. Это Pythonic и избавляет от лишнего кода.
🔁 Используй enumerate вместо счётчиков вручную

Когда нужно одновременно итерироваться по элементам и знать их индекс — не нужно делать это вручную!

🎯 Итог
enumerate — твой друг при работе с индексами в цикле. Это Pythonic и избавляет от лишнего кода.
Хотите стать Геймдизайнером и получить 3 миллиона рублей на свою первую игру?

«Нам нужны люди, которые умеют придумывать игры, а не просто в них играть!» — так звучал главный запрос от студий в этом году.

Рынок трещит по швам: вакансий сотни, специалистов — единицы.
Именно поэтому мы по запросу индустрии запустили бесплатный мини-курс по геймдизайну.

Да-да, бесплатно. Потому что это — инвестиция в тех, кто войдёт в геймдев сразу с козырей.

Тех, кто пройдёт мини-курс, мы не просто учим — мы закидываем плюшками:
— Прямой эфир с опытным продюсером игр
— Персональная консультация по карьере
— Бонус: конференция по нейросетям для всех, кто досмотрит хотя бы 1 урок
— Сертификат и скидка 10 000 ₽ на следующий шаг в профессии
— И шанс забрать 3 млн рублей от студии Gamebox

Начните с теста, получите доступ к урокам, и давайте уже делать свою игру. Пока другие «ещё подумают».
🕰️ Быстрая проверка времени выполнения с timeit

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

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

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

Почему вам попался этот сериал на Netflix? Почему вы видите именно эту рекламу?
Откуда AliExpress знает, что вы купите через 2 дня?

Это всё — работа дата-сайентиста. И бизнес не может без них.

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

Skillfactory даёт шанс попробовать эту профессию на практике — бесплатно, за три дня. Пройдите мини-курс, и посмотрите, ваша ли это профессия.
🧪 Проверка типов переменной с помощью typing.get_origin и typing.get_args

Когда ты работаешь с аннотациями типов (особенно с Union, List[int], Optional[str] и т.п.), стандартной проверки isinstance() недостаточно.

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

🎯 Итог
С помощью get_origin и get_args ты можешь "распаковать" сложные типы и точно понимать, что за структура стоит за аннотацией. Очень полезно при создании универсальных функций или фреймворков.