Библиотека питониста | Python, Django, Flask
40.2K subscribers
2.83K photos
79 videos
51 files
4.42K links
Все самое полезное для питониста в одном канале.

Список наших каналов: https://t.iss.one/proglibrary/9197

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

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

По рекламе: @proglib_adv
РКН: https://gosuslugi.ru/snet/67b885cbd501cf3b2cdb5b36
Download Telegram
📢 Какой сетап идеально подойдёт для разработки AI-агента?

Голосуйте за свой вариант и пишите в комментариях, в каком режиме вы реально кодите.

❤️ — 1
👍 — 2
⚡️ — 3
👏 — 4
🔥 — 5
🎉 — 6
😁 — 7
😍 — 8
🤩 — 9

Какой бы сетап ни был, без AI-агентов в 2025 всё равно далеко не уедешь.

👉 Научим, как строить агентов, которые кодят с тобой
🎉25😍1166👍4🔥4🤩3😁2
🚀 Redis + Python: быстрый старт для разработчиков

Redis (Remote Dictionary Server) — это in-memory хранилище данных, которое можно использовать как:
базу данных
кэш
брокер сообщений или очередь

Главное отличие — данные хранятся в RAM, а не на диске → операции чтения/записи работают за миллисекунды.

✔️ Redis + Python: как подключиться

1⃣ Установить библиотеку:
pip install redis


2⃣ Подключение и тест:
import redis

# подключение
r = redis.Redis(host='localhost', port=6379, db=0)

# запись и чтение
r.set("key", "hello redis")
print(r.get("key")) # b'hello redis'


3⃣ Дальше можно использовать Redis для:
🔘 кэширования результатов запросов
🔘 хранения сессий пользователей
🔘 обработки очередей задач
🔘 мониторинга

Подробнее в статье с примерами

🐸 Библиотека питониста

#буст
Please open Telegram to view this post
VIEW IN TELEGRAM
9👍2🔥1
😃 attrs: простота написания Python-классов без бойлерплейта

attrs — это Python-пакет, который снимает рутину при написании классов и автоматически реализует «ду́ндер»-методы (__init__, __repr__, __eq__ и др.).

📌 Используется даже NASA в миссиях на Марс с 2020 года!

Основная цель — писать лаконичный и корректный код без потерь производительности.

Пример:
from attrs import asdict, define, make_class, Factory

@define
class SomeClass:
a_number: int = 42
list_of_numbers: list[int] = Factory(list)

def hard_math(self, another_number):
return self.a_number + sum(self.list_of_numbers) * another_number

sc = SomeClass(1, [1, 2, 3])
print(sc) # SomeClass(a_number=1, list_of_numbers=[1, 2, 3])
print(sc.hard_math(3)) # 19
print(asdict(sc)) # {'a_number': 1, 'list_of_numbers': [1, 2, 3]}


attrs автоматически добавляет:
✔️ читаемый __repr__
✔️ методы сравнения
✔️ __init__ и управление аргументами
✔️ фабрики значений (Factory)
✔️ конструктор классов на лету (make_class)

📱 Репозиторий

🐸 Библиотека питониста

#буст
Please open Telegram to view this post
VIEW IN TELEGRAM
12👍3🔥3
🔥 Новое в Python 3.14: functools.Placeholder

functools.partial давно помогает замораживать аргументы функций. Но раньше были ограничения: если аргументы были только позиционные, их нельзя было зафиксировать через partial с именованными параметрами.

В Python 3.14 это решает новый functools.Placeholder.

➡️ Пример: удаление пунктуации

До 3.14 приходилось писать обёртку:
import string

_table = str.maketrans("", "", string.punctuation)

def remove_punctuation(s):
return s.translate(_table)

print(remove_punctuation("Hello, world!")) # Hello world


С Placeholder можно напрямую зафиксировать второй аргумент:
from functools import partial, Placeholder
import string

_table = str.maketrans("", "", string.punctuation)
remove_punctuation = partial(str.translate, Placeholder, _table)

print(remove_punctuation("Hello, world!")) # Hello world


Что нужно понимать:
📝 Placeholder резервирует место для аргумента, который придёт позже.
📝 Вызов remove_punctuation("text") превращается в str.translate("text", _table).
📝 Удобнее импортировать короче:
  from functools import Placeholder as _P


Теперь partial можно использовать и с функциями, где аргументы позиционные-only.
Это открывает дорогу к более лаконичному и гибкому коду, без лишних обёрток.

🐸 Библиотека питониста

#буст
Please open Telegram to view this post
VIEW IN TELEGRAM
👍98🤔3🔥1
Помните игру Portal? Вам давали один инструмент — портальную пушку — и с её помощью вы решали десятки головоломок, переворачивая пространство с ног на голову.

🐍 Python — это ваша портальная пушка. Один инструмент, который позволяет вам «сокращать» путь: автоматизировать рутину, парсить сайты, создавать ботов и решать реальные задачи.

Наш обновлённый курс по Python — это серия идеально выстроенных тестовых камер. Без сухой теории, но с практическими головоломками. Мы, как GLaDOS (только добрее 😉), проведём вас через 30 уроков, от основ до создания финального проекта — вашего собственного Telegram-бота.

И торт — это не ложь. Ваша награда — реальный проект в портфолио и специальная цена 24 990 рублей, которая действует всего 4 дня, до 1 сентября.

👉 Начать тестирование
3👍2🥱2🤔1
😳 Грейдинг умер, ИИ захватил собесы: 5 трендов IT-найма 2025

Помнишь времена, когда можно было сменить работу и сразу получать на 50% больше?

😢 Забудь.

В 2025-м правила игры кардинально изменились — компании боятся ChatGPT на собеседованиях, а поиск работы через LinkedIn стал почти бесполезен.

Разбираем 5 трендов, которые перевернули IT-найм с ног на голову.

🔗 Ссылка на статью

🐸 Библиотека питониста

#буст
Please open Telegram to view this post
VIEW IN TELEGRAM
👍42🥱1
Осталось 48 часов!

Обратный отсчёт пошёл: только до воскресенья 23:59 можно купить курс «AI-агенты для DS-специалистов» и начать учиться уже с 15 сентября.

⚡️ Это ваши +3 недели форы, чтобы спокойно разобраться в самых сложных темах и прийти к первому занятию 7 октября уже подготовленным.

👉 Забрать место
🥱6
Какой язык оказал сильное влияние на Python?
Anonymous Quiz
19%
ABC
43%
C++
20%
Perl
18%
Pascal
🤔10👍6😁3
🤓 «Сначала выучу Python идеально, а потом пойду в ML»

Звучит логично, но на практике — ловушка.
Python огромный: фреймворки, библиотеки, нюансы синтаксиса. Учить «всё сразу» можно бесконечно.

В итоге — месяцы зубрёжки, а до ML руки так и не доходят.

На старте достаточно баз: типы данных, циклы, функции, работа с библиотеками. Всё остальное лучше подтягивать в процессе решения ML-задач.

⚠️ До 1 сентября курсы можно забрать по старым ценам. Это последние выходные, когда:
ML идёт за 34 000 вместо 44 000 ₽ + Python в подарок,
два в одном: оплатите курс по математике и получите второй доступ в подарок,
— и главное: можно купить все курсы до подорожания.

👉 ML для старта в Data Science

А для будущих Data Scientist’ов у нас ещё:
Базовые модели ML и приложения
Математика для Data Science
AI-агенты для DS-специалистов (2-й поток скоро)
🥱91😢1
🌀 Заблуждения программистов: где логика даёт сбой

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

Обычно это звучит логично. Например:
Email всегда содержит ровно один символ @.


И многие пишут валидацию именно так. Но на деле email может содержать несколько @. Ваш код внезапно «ломается» в реальных условиях.

Таких примеров десятки. Все эти предположения — falsehoods, которые делают софт хрупким.

📚 Существуют целые подборки таких «ложных убеждений». Они помогают расширить взгляд и писать более надёжный код, учитывающий реальные данные и сценарии.

👉 Если хотите стать сильнее как инженер — изучите список falsehoods и держите их в голове.

🐸 Библиотека питониста

#междусобойчик
Please open Telegram to view this post
VIEW IN TELEGRAM
🤔54👍2🌚1
📱 Новости и релизы Python‑пакетов за последние 7 дней

📢 Новости
PyPIStats.org теперь под управлением PSF — сервис статистики PyPI официально перешёл под крыло Python Software Foundation.
«Python: The Documentary» — свежий фильм о том, как создавался и развивался язык.

📦 Свежие релизы пакетов
protovalidate 0.15.0 — валидация Protocol Buffers для Python.
onnx 1.19.0 — Open Neural Network Exchange.
cron-descriptor 2.0.x — перевод cron-выражений в человекочитаемый формат.
rpaframework 31.0.0 — набор инструментов для RPA.
litellm 1.76.0 — удобный доступ к API разных LLM-провайдеров.
onnxscript 0.4.0 — написание функций и моделей ONNX на Python.

📝 Статьи и материалы
Ожившие фото: стеганографический аудиоплеер на Python + PyQt6.
Оптимизация Django под высокие нагрузки: кэш, SIMD и настройка GC.
Полезные конструкции Python для работы с данными.
Скрытая грамматика Python: почему len() — это полисемия.
PEP 723 + uv: однофайловые скрипты с зависимостями.
Универсальный парсинг сайтов: requests vs headless, токены, куки, прокси и ротация IP.
Иконки прямо в коде: как мы избавились от assets при портировании приложения.

📚 Книги
Паттерны разработки на Python: TDD, DDD и событийно-ориентированная архитектура.
Мощный Python: паттерны и стратегии современного программирования.

🐸 Библиотека питониста

#свежак
Please open Telegram to view this post
VIEW IN TELEGRAM
👍53
ПОСЛЕДНИЙ ДЕНЬ
КУРСЫ ПОДОРОЖАЮТ ЗАВТРА‼️

ML за 34к вместо 44к + Python в подарок
Математика → второй доступ в подарок
— Ранний доступ к AI-агентам с 15 сентября
— И МОЖНО УСПЕТЬ КУПИТЬ ВСЁ ДО ПОДОРОЖАНИЯ

👉 Proglib Academy
3
🐍 Рабочий лайфхак: начинаем использовать pytest с parametrize

Тестирование функций может быть утомительным и однообразным. В pytest есть супер-фича parametrize, которая позволяет запускать один тест с множеством входных данных — без дублирования кода.

Например, есть функция add_nums():
def add_nums(nums):
return sum(nums)


Вместо того чтобы писать три почти одинаковых теста:
def test_123():
assert add_nums([1, 2, 3]) == 6

def test_negatives():
assert add_nums([1, 2, -3]) == 0

def test_empty():
assert add_nums([]) == 0


Можно использовать parametrize:
import pytest

@pytest.mark.parametrize(
"nums, expected_total",
[
([1, 2, 3], 6),
([1, 2, -3], 0),
([], 0),
]
)
def test_add_nums(nums, expected_total):
assert add_nums(nums) == expected_total


Как это работает:
Декоратор @pytest.mark.parametrize говорит pytest, какие аргументы подставлять.
Каждый набор данных из списка превращается в отдельный тест.
Добавить новый случай — просто добавить ещё одну строку в список.

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

🐸 Библиотека питониста

#буст
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥73👍2🥱1
🐍 Как ускорить Python в больших проектах: lazy imports в действии

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

Что начинает происходить со временем:
— скрипты стартуют по 30–40 секунд
— Jupyter-ноутбуки грузятся 10–15 минут
— распределённые jobs тратят больше времени на import, чем на сами вычисления

💡 Решение → Lazy imports
Модуль не загружается при import’е, а подменяется объектом LazyImport.

Настоящий импорт происходит только тогда, когда имя реально используется в коде:
from foo import bar

# globals() now contains {"bar": LazyImport("foo", "bar")}.
# the foo module has not yet been resolved or evaluated

qux = bar()

# in the evaluation of the above statement, bar is retrieved
# from the globals() dict, causing foo to be imported and bar
# to be reassigned to foo.bar


Что это даёт:
👌 мгновенный старт CLI-утилит
👌 быстрый запуск Jupyter даже с «тяжёлыми» внутренними библиотеками
👌 распределённые задачи не тратят время на лишние зависимости

→ Это не библиотека — это патч интерпретатора (форк CPython), но эффект огромный.

🔗 Полная статья (советуем сохранить)

🐸 Библиотека питониста

#буст
Please open Telegram to view this post
VIEW IN TELEGRAM
6👍3
Гайд: где хостить Python-приложение

Вы написали веб-приложение на Django, Flask или FastAPI, но оно так и лежит на GitHub? Без продакшена код — это просто хобби.

Вот где Python-разработчики чаще всего размещают свои проекты:
Heroku — классика, простой деплой, но дорого для серьёзных нагрузок.
Fly.io — современная альтернатива Heroku, хорош для быстрых запусков.
AWS ECS / Fargate — контейнеры, масштабируемость, но сложнее в настройке.
DigitalOcean App Platform — баланс простоты и цены.
Render — минимализм и понятный UX.
Vercel / Netlify — больше про фронтенд, но FastAPI можно прикрутить.

В гайде сравниваются:
— Developer Experience
— Масштабируемость
— Производительность
— Стоимость

👉 Гайд для тех, кто выбирает, где запускать своё Python-приложение в 2025.

🐸 Библиотека питониста

#буст
Please open Telegram to view this post
VIEW IN TELEGRAM
4👍3