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

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

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

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

РКН: clck.ru/3G6pBb
Download Telegram
🔐 Безопасная подстановка значений в SQL — не через f-строки!

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

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

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

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

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

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

🎯 Итог
enumerate — твой друг при работе с индексами в цикле. Это Pythonic и избавляет от лишнего кода.
🕰️ Быстрая проверка времени выполнения с timeit

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

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

🎯 Итог
timeit — отличный инструмент для быстрой и точной оценки производительности. Удобен для сравнений разных реализаций алгоритмов и оптимизаций.
🧪 Проверка типов переменной с помощью typing.get_origin и typing.get_args

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

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

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

Иногда нужно быстро запустить несколько задач параллельно, особенно для I/O-операций. Вместо ручной работы с threading, можно использовать ThreadPoolExecutor — простой и читаемый способ.

Этот код запускает задачи в отдельных потоках, используя пул. Отличный способ распараллелить I/O (запросы, чтение файлов и т.п.).

🎯 Итог
ThreadPoolExecutor — лаконичный и мощный инструмент для многопоточности, особенно когда надо быстро распараллелить задачи без лишнего шаблонного кода.
🪄 📂 Быстрое создание временных файлов и папок с tempfile

Нужно что-то временное для логов, кеша или тестов? Вместо хардкода путей и ручной очистки используй модуль tempfile — он сам всё создаст и удалит.

🎯 Итог
tempfile позволяет безопасно работать с временными файлами и папками, особенно полезно в тестах или для промежуточных данных — и без забот об очистке.
🔁 🔁 Повторяй действия с itertools.cycle

Когда нужно бесконечно перебирать элементы (например, циклично менять цвета, игроков или статусы), используй itertools.cycle, а не колхозный индекс.

🎯 Итог
itertools.cycle — лаконичное и безопасное решение для бесконечного повторения элементов. Отлично работает там, где важна цикличность.
🧪 Проверка наличия подстроки через in быстрее, чем find()

Если тебе просто нужно узнать, содержится ли одна строка в другой, используй оператор in вместо str.find() или str.index() — это читаемее и эффективнее.

🎯 Итог
Оператор in — это питоновский способ проверки наличия элемента или подстроки. Он читабельнее, короче и часто быстрее.
Разница между is и ==

is оператор проверяет, ссылаются ли оба операнда на один и тот же объект (т.Е. он проверяет, совпадает ли идентификатор операндов или нет).
== оператор сравнивает значения обоих операндов и проверяет, совпадают ли они.
Это is для равенства ссылок и == для равенства значений.

256 является существующим объектом, но 257 им не является. При запуске python будут выделены числа от -5 до 256. Эти числа используются часто, поэтому имеет смысл просто иметь их наготове.
🧵 Параллельная итерация по нескольким спискам с zip()

Если тебе нужно пройтись одновременно по двум (или более) спискам — не используй индексы вручную. Вместо этого — zip()!

🎯 Итог
zip() делает код чище и избавляет от необходимости вручную управлять индексами. Итерируйся по данным параллельно красиво и питонично!
Python — как первая гитара: просто, но затягивает

Пока кто-то учит программирование по роликам на YouTube, вы можете за 5 дней собрать Telegram-бота, веб-страницу и понять, ваше ли это вообще.

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

Мини-курс не грузит теорией. Это как пробная вечеринка в мире IT: сделали, почувствовали, захотели больше.

Нажмите “начать” — и пусть Python станет вашим козырем.
🧭 Проверка вхождения подстроки через оператор in — быстрее и проще

Иногда разработчики прибегают к str.find() или str.index() для поиска подстроки, но есть более питоничный способ — использовать in.

🎯 Итог
Используй in для проверки наличия подстроки — это читаемо, кратко и безопасно.
🧊 Immutable словари с types.MappingProxyType

Если нужно создать неизменяемый словарь, например, для конфигурации или констант, можно использовать MappingProxyType из модуля types.

🎯 Итог
MappingProxyType — отличный способ предоставить доступ к данным без риска их изменить. Подходит для защиты конфигураций и глобальных констант.
🕵️‍♂️ Атрибуты по умолчанию с getattr

Иногда нужно безопасно получить значение атрибута объекта, даже если он может не существовать. Вместо проверки через hasattr, можно использовать getattr с дефолтным значением.

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

🎯 Итог
getattr(obj, attr, default) — простой способ избежать AttributeError и задать значение по умолчанию для несуществующих атрибутов.
Всего за 5 минут определите подходящую вам IT-профессию.

Онлайн-школа Skillfactory разработала уникальный профориентационный тест из 18 вопросов. Ответив на них, узнаете наиболее подходящую вам специальность.

Работайте в российских или зарубежных компаниях, в офисе или удаленно. Для айтишников — сниженная ставка по ипотеке, высокая зарплата, комфортные условия и гибкий график.

Переходите по специальной ссылке, чтобы пройти тест, получить карьерную консультацию и мини-курс для выбора профессии в IT или дизайне

Реклама. Информация о рекламодателе по ссылкам в посте.
🔁 Один for, два результата: перебор с индексами через enumerate

Когда нужно итерироваться по списку и одновременно иметь доступ к индексам, не используйте range(len(...)) — лучше использовать enumerate().

enumerate() делает код чище, понятнее и безопаснее (избегаете IndexError, если перепутаете индексы).

🎯 Итог
Используй enumerate, когда нужен и элемент, и его индекс — это питонично и читаемо.
🧑‍💻 Python объединяет Netflix, Google и Spotify — все они используют этот язык для разработки своих продуктов

Сделать первые шаги в знакомстве с языком можно на бесплатном курсе Нетологии, который включает в себя 5 занятий. За время обучения можно создать 2 рабочих проекта: планировщик задач и телеграм-бот.

При этом всегда можно обратиться за помощью к экспертам в чате — они проконсультируют и ответят на вопросы. Запись на курс — по ссылке.

Реклама. ООО "Нетология". ИНН 7726464125 Erid 2VSb5xq3tcy
newspaper3k - с этим вы еще не встречались

Приготовьтесь к тому, что модуль newspaper снесёт вам крышу.
Он помогает извлекать статьи и связанные мета-данные из многих разных источников. Так же можно извлечь изображения, текста и имена авторов.

В нём даже имеется встроенная NLP-функциональность.

В этом случае, если вы собирались использовать BeautifulSoup или другую библиотеку для вебскрапинга так же в следующем проекте, лучше сэкономьте своё время и силы и загрузите newspaper