Библиотека питониста | Python, Django, Flask – Telegram
Библиотека питониста | Python, Django, Flask
39.4K subscribers
2.99K photos
81 videos
51 files
4.63K links
Все самое полезное для питониста в одном канале.

Список наших каналов: https://news.1rj.ru/str/proglibrary/9197

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

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

По рекламе: @proglib_adv
РКН: https://gosuslugi.ru/snet/67b885cbd501cf3b2cdb5b36
Download Telegram
📚Напоминаем про наш полный курс «Самоучитель по Python для начинающих»

Мы написали и собрали для вас в одну подборку все 25 глав и 230 практических заданий!

🐍 Часть 1: Особенности, сферы применения, установка, онлайн IDE
🐍 Часть 2: Все, что нужно для изучения Python с нуля – книги, сайты, каналы и курсы
🐍 Часть 3: Типы данных: преобразование и базовые операции
🐍 Часть 4: Методы работы со строками
🐍 Часть 5: Методы работы со списками и списковыми включениями
🐍 Часть 6: Методы работы со словарями и генераторами словарей
🐍 Часть 7: Методы работы с кортежами
🐍 Часть 8: Методы работы со множествами
🐍 Часть 9: Особенности цикла for
🐍 Часть 10: Условный цикл while
🐍 Часть 11: Функции с позиционными и именованными аргументами
🐍 Часть 12: Анонимные функции
🐍 Часть 13: Рекурсивные функции
🐍 Часть 14: Функции высшего порядка, замыкания и декораторы
🐍 Часть 15: Методы работы с файлами и файловой системой
🐍 Часть 16: Регулярные выражения
🐍 Часть 17: Основы скрапинга и парсинга
🐍 Часть 18: Основы ООП – инкапсуляция и наследование
🐍 Часть 19: Основы ООП – абстракция и полиморфизм
🐍 Часть 20: Графический интерфейс на Tkinter
🐍 Часть 21: Основы разработки игр на Pygame
🐍 Часть 22: Основы работы с SQLite
🐍 Часть 23: Основы веб-разработки на Flask
🐍 Часть 24: Основы работы с NumPy
🐍 Часть 25: Основы анализа данных с Pandas
👍6
🐍 Почему разработчики всё ещё выбирают Python: взгляд Гвидо ван Россума

GitHub рассказал Гвидо ван Россуму свежие данные Octoverse — и он был удивлён: несмотря на то, что TypeScript впервые обошёл Python по использованию, Python вырос на 49% за 2025 год.

Он остаётся главным языком для ИИ, науки и обучения, а также культурным феноменом, сформировавшим целое поколение разработчиков.

В интервью Гвидо рассказывает:
— почему читаемость всегда была основной философией языка;
— как Python превратился из хобби-проекта в основу современных ИИ-технологий;
— и что ждёт язык дальше — от ускорения до новых направлений развития.

🤌 Бонусы для подписчиков:
Скидка 40% на все курсы Академии
Розыгрыш Apple MacBook
Бесплатный тест на знание математики

🔗 Ссылка на интервью
Please open Telegram to view this post
VIEW IN TELEGRAM
5👍5🔥1
📱 Python новости за последние 7 дней

Почему Python — не лучший язык для Data Science автор рассказывает, где Python начинает проигрывать: многопоточность, скорость, экосистема для HPC. Много практических примеров и сравнение с Julia/Rust.

Магия Python подробное объяснение interning-а и механики хранения целых чисел в CPython. Отличный материал для подготовки к собесам.

Компилируем Python так, чтобы он работал везде —гайд по сборке Python-приложений в единый бинарь и созданию truly portable окружений.

Python 3.14 — полный список нововведений.

FastAPI без хаоса: как перестать писать всё в main.py хорошая практическая структура проекта: роутеры, конфигурация, DI, зависимости, разбиение на модули.

10 приёмов профи для ускорения Python-кода от очевидных оптимизаций до продвинутых: буферизация, slots, NumPy-трюки, кэширование, генераторы, профилирование.

Pydantic V2: dataclasses больше не нужны — выпуск V2 с архитектурой на Rust сделал Pydantic быстрее, безопаснее и более строгим.

9 принципов стабильных автотестов советы по структуре, управлению состоянием, локализации багов, idempotent-тестам и CI-практикам.

FlakyDetector — инструмент для охоты на нестабильные тесты — история создания утилиты, которая автоматически выявляет flaky-тесты в Python-проектах.

🤌 Бонусы для подписчиков:
Скидка 40% на все курсы Академии
Розыгрыш Apple MacBook
Бесплатный тест на знание математики

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

#свежак
Please open Telegram to view this post
VIEW IN TELEGRAM
👍31
📘 4 декабря стартует набор на курс «Математика для разработки AI-моделей»

Если вы работаете с моделями или хотите перейти в DS/ML, декабрь — идеальный момент закрыть фундаментальные пробелы.

На курсе вы разберёте ключевые разделы, которые лежат в основе современных AI-моделей: линейная алгебра, анализ, оптимизация, математический анализ, вероятности, статистика. Всё через практику в Python.

В программе живые занятия с экспертами AI-индустрии (SberAI, ВШЭ, WB&Russ), разбор реальных задач, квизы и финальный проект.

🌐 Формат: онлайн + доступ к записям

🎁 Бонусы: курс «Школьная математика» в подарок, бесплатный тест по математике

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

👉 Записаться на курс
🎄 Advent of Code 2025: новый сезон головоломок для разработчиков

Advent of Code (AoC) — это ежегодный адвент-календарь из небольших программных задач, которые можно решать на любом языке.

Для кого это

Для всех, кто любит программирование: новичков, студентов, разработчиков, команд. AoC используют как тренажёр, подготовку к собеседованиям, учебный курс или просто ежедневный челлендж.

Условия максимально простые:
— не нужен мощный компьютер,
— не нужен CS-бэкграунд,
— каждая задача решается за ≤15 секунд даже на старом железе.

➡️ Ссылка на календарь

🔹 Курс «Программирование на языке Python»
🔹 Получить консультацию менеджера
🔹 Сайт Академии 🔹 Сайт Proglib

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

#буст
Please open Telegram to view this post
VIEW IN TELEGRAM
5👍3🤩2
🔥 Pydantic уже не тот: теперь это мощный комбайн для конфигураций.

Когда-то это была всего лишь библиотека для валидации данных.

Сегодня — полноценная система загрузки и обработки настроек, которая умеет:
— читать .env (и несколько подряд),
— забирать значения из переменных окружения,
— парсить JSON/TOML/YAML,
— работать с секретами из Docker/AWS/GCP/Azure/Unix-файлов,
— и даже разбирать CLI-аргументы.

По сути, теперь одним классом Pydantic вы можете заменить dotenv/environs, argparse/click/typer, загрузку yaml/json/toml и большую часть валидации.

Пример:
class Settings(BaseSettings):
service_url: HttpUrl
api_token: SecretStr
log_level: Literal['DEBUG','INFO','WARNING','ERROR'] = 'INFO'
port: conint(ge=1024, le=65535) = 8080

model_config = ConfigDict(
env_file=("/etc/.env", ".env"),
cli_parse_args=True
)


Каскад загрузки работает так:
1. dotenv
2. переменные окружения
3. CLI
4. параметры, переданные вручную

И всё это автоматически валидируется, приводится к нужным типам, секреты скрываются, вложенные структуры корректно обрабатываются.

Пример запуска:
export API_TOKEN="yeah_no"
python app.py --service_url https://bitecode.dev


Результат:
Service URL: https://bitecode.dev/
API Token: **********
Log Level: WARNING
Port: 8080


CLI-режим поддерживает множество удобств: подкоманды, kebab-case, списки/JSON в аргументах, отрицательные флаги, алиасы, mutually-exclusive groups и даже интеграцию с argparse.

Если нужно — легко подключить собственные источники настроек и секретов (включая Hashicorp Vault).

🔹 Курс «Программирование на языке Python»
🔹 Получить консультацию менеджера
🔹 Сайт Академии 🔹 Сайт Proglib

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

#буст
Please open Telegram to view this post
VIEW IN TELEGRAM
👍135🔥1🤩1
😅 Мы нашли человека, который 2 года приручал Dependency Injection в Python

Разработчик два года (!) шлифовал ультра-простую библиотеку для Dependency Injection — python-injection.

Если вы когда-то страдали от того, где создать зависимость, как прожить её lifecycle и почему DI-фреймворки такие занудные — это может быть тем самым «наконец-то нормальным вариантом».

Что умеет:
⏩️ DI на базе type hints
⏩️ Декораторы для регистрации зависимостей
⏩️ 4 типа lifecycle
⏩️ Scoped зависимости через context manager
⏩️ Async support
⏩️ Профили (можете подменять имплементации)
⏩️ Ничего не создаётся заранее — только ленивый инстансинг
⏩️ И всё это без боли в душе и мозгах

Мы любим такие простые и полезные штуки — меньше шаблонного кода, больше фокуса на логике.

Если вы пишете на Python — взгляните:
➡️ GitHub
➡️ PyPI

🔹 Курс «Программирование на языке Python»
🔹 Получить консультацию менеджера
🔹 Сайт Академии 🔹 Сайт Proglib

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

#буст
Please open Telegram to view this post
VIEW IN TELEGRAM
👍75🔥4🥱1
✔️ Улучшаем itertools.pairwise

Если вы когда-нибудь работали с последовательностями, вы почти наверняка сталкивались с ситуацией: нужно пройтись не по одному элементу, а по соседним. Для таких случаев в Python есть замечательная штука — itertools.pairwise.

Она берёт ваше "ABCD" и превращает это в:
("A", "B"), ("B", "C"), ("C", "D")


Звучит просто — и это реально спасает в куче сценариев. Например, можно легко посчитать, как менялся банковский баланс:
from itertools import pairwise

balance_history = [700, 1000, 800, 750]

for before, after in pairwise(balance_history):
print(after - before)


Но фокус вот в чём…

Иногда пары — это мало. Хочется тройки, четвёрки, пятёрки… словом, окно произвольного размера.

Вот здесь pairwise уже не поможет — поэтому мы собрали несколько аккуратных способов сделать «обобщённый pairwise», он же nwise().

✔️ Вариант 1 — через deque

Простой, понятный и работает на всём, что итерируется:
from collections import deque
from itertools import islice

def nwise(iterable, n):
iterable = iter(iterable)
window = deque(islice(iterable, n - 1), maxlen=n)
for value in iterable:
window.append(value)
yield tuple(window)


Использование:
nwise("ABCD", 3)
→ ("A","B","C"), ("B","C","D")


✔️ Вариант 2 — через tee

Такой «фокус с зеркалами»: создаём n независимых итераторов и сдвигаем каждый на свою позицию:
from itertools import islice, tee

def nwise(iterable, n):
iterators = tee(iter(iterable), n)
for idx, iterator in enumerate(iterators):
for _ in islice(iterator, idx):
pass
yield from zip(*iterators)


Выглядит почти магически, но работает честно.

✔️ Вариант 3 — рекурсивный (красивый)

Пожалуй, личный фаворит. Если присмотреться, можно заметить:
triplewise — это просто pairwise(pairwise(...)).

А значит, можно сделать рекурсию:
from itertools import pairwise

def nwise(iterable, n):
if n == 1:
yield from ((x,) for x in iterable)
return

for (head, *_), tail in pairwise(nwise(iterable, n - 1)):
yield (head, *tail)


Минимализм и элегантность.

🍷 Если вдруг придумаете способ лучше — пишите!

🔹 Курс «Программирование на языке Python»
🔹 Получить консультацию менеджера
🔹 Сайт Академии 🔹 Сайт Proglib

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

#буст
Please open Telegram to view this post
VIEW IN TELEGRAM
👍14🔥64😁1
👓 Тайная жизнь Python: super() и Method Resolution Order (MRO)

Почему super() не всегда означает «родительский класс» и что оно делает на самом деле.

Вы пишете наследование в Python, кажется всё просто… но вывод программы может вас удивить:
class A:
def process(self):
print("A.process()")

class B(A):
def process(self):
print("B.process()")
super().process()

class C(A):
def process(self):
print("C.process()")
super().process()

class D(B, C):
def process(self):
print("D.process()")
super().process()

d = D()
d.process()


Ожидание:
D.process()
B.process()
A.process()


Реальность:
D.process()
B.process()
C.process()
A.process()


Почему C.process() вызывается, если B наследуется от A? Всё дело в Method Resolution Order (MRO).

➡️ MRO — порядок поиска методов

Каждый класс в Python имеет атрибут __mro__ — последовательность классов, через которую Python ищет методы:
class A: pass
class B(A): pass
class C(A): pass
class D(B, C): pass

print(D.__mro__)
# (<class '__main__.D'>, <class '__main__.B'>, <class '__main__.C'>,
# <class '__main__.A'>, <class 'object'>)


Вывод: super() вызывает следующий класс в MRO, а не «родительский класс».

➡️ Алгоритм C3 Linearization

Python использует C3 линейнизацию, чтобы определить MRO. Основные правила:
1️⃣ Дети перед родителями
2️⃣ Порядок слева направо из списка наследников
3️⃣ Сохранять порядок родительских MRO (монотонность)

Пример для class D(B, C):
L(D) = D + merge(L(B), L(C), [B, C])
L(B) = B, A, object
L(C) = C, A, object
merge([B,A,object],[C,A,object],[B,C]) -> D,B,C,A,object


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

➡️ Практическая сила super() + MRO

Использование с cooperative mixins:
class LoggingMixin:
def __init__(self, **kwargs):
print("LoggingMixin.__init__")
super().__init__(**kwargs)

class ValidationMixin:
def __init__(self, **kwargs):
print("ValidationMixin.__init__")
super().__init__(**kwargs)

class Base:
def __init__(self, name):
self.name = name
print(f"Base.__init__: {name}")

class Document(LoggingMixin, ValidationMixin, Base):
def __init__(self, name, **kwargs):
print("Document.__init__")
super().__init__(name=name, **kwargs)

doc = Document("report.pdf")
# Output:
# Document.__init__
# LoggingMixin.__init__
# ValidationMixin.__init__
# Base.__init__: report.pdf


Правила для mixins:
1️⃣ Принимать **kwargs и передавать их дальше
2️⃣ Вызывать super().__init__() всегда
3️⃣ Извлекать только свои параметры

Так работает cooperative multiple inheritance: каждый класс выполняется один раз в правильном порядке.

Ошибки, которые часто встречаются:
1️⃣ Несогласованные сигнатуры методов → используйте **kwargs
2️⃣ Неполный вызов super()→ классы в цепочке могут быть пропущены
3️⃣ Ошибочные предположения про родителя → super() зависит от MRO, а не от «родительского класса»

Проверка MRO и super():
print(Document.__mro__)
# (<class 'Document'>, <class 'LoggingMixin'>,
# <class 'ValidationMixin'>, <class 'Base'>, <class 'object'>)


isinstance() и issubclass() также следуют MRO.

🔹 Курс «Программирование на языке Python»
🔹 Получить консультацию менеджера
🔹 Сайт Академии 🔹 Сайт Proglib

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

#буст
Please open Telegram to view this post
VIEW IN TELEGRAM
11👍9🔥2
😱 PyWa — если хотите сделать WhatsApp-бота на Python без боли

Если вы когда-нибудь пробовали работать с WhatsApp Cloud API напрямую, то вы знаете: удовольствие так себе.

И вот тут появляется PyWa — Python-фреймворк, который делает всё это разумным, понятным и быстрым.

➡️ Что вообще умеет PyWa

Если коротко — почти всё, что нужно для нормального WhatsApp-бота:
— отправка текстов, картинок, файлов, локаций, кнопок — всего, что угодно;
— приём входящих событий в реальном времени: сообщения, реакции, клики;
— удобные listeners, чтобы ждать ответ от пользователя без костылей;
— создание и отправка темплейтов прямо из Python;
— построение WhatsApp Flows без боли;
— синхронный и асинхронный режимы (API одинаковый);
— из коробки работает с FastAPI, Flask и другими серверами;
— полностью типизировано, документировано и подходит под продакшн.

Пример: отправили сообщение — и всё работает:
from pywa import WhatsApp, types

wa = WhatsApp(
phone_id="100458559237541",
token="EAAEZC6hUxkTIB"
)

wa.send_message(
to="9876543210",
text="Hello from PyWa!",
buttons=[
types.Button(noscript="Menu", callback_data="menu"),
types.Button(noscript="Help", callback_data="help")
]
)

wa.send_image(
to="9876543210",
image="https://example.com/image.jpg",
caption="Check out this image!",
)


Обработка сообщений (пример на FastAPI):
from pywa import WhatsApp, filters, types
from fastapi import FastAPI

app = FastAPI()

wa = WhatsApp(
phone_id=123456,
token="********",
server=app,
callback_url="https://yourdomain.com/",
verify_token="xyz123",
app_id=123456,
app_secret="********"
)

@wa.on_message(filters.matches("Hello", "Hi"))
def hello(client: WhatsApp, msg: types.Message):
msg.react("👋")
msg.reply_text(
text=f"Hello {msg.from_user.name}!",
buttons=[types.Button(noscript="About me", callback_data="about_me")]
)

age = msg.reply("What's your age?").wait_for_reply(filters=filters.text).text
msg.reply_text(f"Your age is {age}.")


Работает очень прозрачно — почти как телеграм-боты, только для WhatsApp.

Установка:
pip install -U pywa


📱 Github

🔹 Курс «Программирование на языке Python»
🔹 Получить консультацию менеджера
🔹 Сайт Академии 🔹 Сайт Proglib

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

#буст
Please open Telegram to view this post
VIEW IN TELEGRAM
👍95😁4
📖 Гайд, который наконец объясняет, как делать Python-пакеты нормально

Мы в сообществе часто сталкиваемся с одной и той же ситуацией: хочется выпустить аккуратный Python-пакет, а в итоге тонешь в инструментах, конфигурациях и противоречивых советах.

И вот тут очень кстати появляется pyOpenSci Python Package Guide — спокойный, структурированный и действительно полезный материал, который объясняет весь процесс человеческим языком.

Что в нём есть:
✔️ как шаг за шагом собрать Python-пакет;
✔️ как разобраться в современной экосистеме инструментов;
✔️ как организовать код, тесты, документацию и метаданные;
✔️ что считать хорошей практикой, а что — лишним усложнением;
✔️ подборка ресурсов от комьюнити, где уже прошли этот путь.

Гайд помогает увидеть всю «картину целиком» — от структуры проекта до того, как его поддерживать дальше, когда первая волна энтузиазма прошла.

🔗 Ссылка на гайд

🔹 Курс «Программирование на языке Python»
🔹 Получить консультацию менеджера
🔹 Сайт Академии 🔹 Сайт Proglib

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

#буст
Please open Telegram to view this post
VIEW IN TELEGRAM
👍112🔥1
Ты пишешь import numpy, но понимаешь ли ты магию?

Python скрывает сложность вычислений за удобными методами. Но чтобы расти из джуна в мидла/сеньора в DS, нужно понимать, что происходит внутри fit() и predict().

Залетайте на курс по математике с живыми вебинарами.

Разбираем на практике:

— манипуляции с ndarray: векторы, матрицы, транпонирование;
— реализацию линейной регрессии без «коробочных» решений;
— применение SVD-разложения для реальных задач (рекомендации, сжатие).

Первый вебинар уже доступен в записи.

Присоединиться до 9 декабря:
https://clc.to/LojFzw
4👍1
Это фича, а не баг. Так лучше!

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

#развлекалово
Please open Telegram to view this post
VIEW IN TELEGRAM
😁18👍1