ch
Feedback
Библиотека питониста | Python, Django, Flask

Библиотека питониста | Python, Django, Flask

前往频道在 Telegram

Все самое полезное для питониста в одном канале. Список наших каналов: https://t.me/proglibrary/9197 Для обратной связи: @proglibrary_feeedback_bot По рекламе: @proglib_adv РКН: https://gosuslugi.ru/snet/67b885cbd501cf3b2cdb5b36 #WXSSA

显示更多

📈 Telegram 频道 Библиотека питониста | Python, Django, Flask 的分析概览

频道 Библиотека питониста | Python, Django, Flask (@pyproglib) 俄语 语言赛道中的 是活跃参与者。目前社区聚集了 37 922 名订阅者,在 技术与应用 类别中位列第 3 618,并在 俄罗斯 地区排名第 17 051

📊 受众指标与增长动态

невідомо 创建以来,项目保持高速增长,吸引了 37 922 名订阅者。

根据 10 六月, 2026 的最新数据,频道保持稳定运转。过去 30 天订阅人数变化为 -134,过去 24 小时变化为 0,整体触达仍然可观。

  • 认证状态: 未认证
  • 互动率 (ER): 平均受众互动率为 5.17%。内容发布后 24 小时内通常能获得 2.71% 的反应,占订阅者总量。
  • 帖子覆盖: 每篇帖子平均可获得 1 962 次浏览,首日通常累积 1 026 次浏览。
  • 互动与反馈: 受众积极参与,单帖平均反应数为 8
  • 主题关注点: 内容集中在 питониста, навигация, буст, строка, api 等核心主题上。

📝 描述与内容策略

作者将该频道定位为表达主观观点的平台:
Все самое полезное для питониста в одном канале. Список наших каналов: https://t.me/proglibrary/9197 Для обратной связи: @proglibrary_feeedback_bot По рекламе: @proglib_adv РКН: https://gosuslugi.ru/snet/67b885cbd501cf3b2cdb5b36 #WXSSA

凭借高频更新(最新数据采集于 11 六月, 2026),频道始终保持新鲜度与高覆盖。分析显示受众积极互动,使其成为 技术与应用 类别中的关键影响点。

37 922
订阅者
无数据24 小时
-207
-13430
吸引订阅者
六月 '26
六月 '26
+40
在0个频道中
五月 '26
+198
在0个频道中
Get PRO
四月 '26
+100
在1个频道中
Get PRO
三月 '26
+170
在6个频道中
Get PRO
二月 '26
+118
在0个频道中
Get PRO
一月 '26
+171
在2个频道中
Get PRO
十二月 '25
+272
在2个频道中
Get PRO
十一月 '25
+214
在3个频道中
Get PRO
十月 '25
+245
在1个频道中
Get PRO
九月 '25
+172
在0个频道中
Get PRO
八月 '25
+226
在2个频道中
Get PRO
七月 '25
+227
在1个频道中
Get PRO
六月 '25
+142
在4个频道中
Get PRO
五月 '25
+188
在0个频道中
Get PRO
四月 '25
+274
在16个频道中
Get PRO
三月 '25
+345
在53个频道中
Get PRO
二月 '25
+334
在34个频道中
Get PRO
一月 '25
+400
在39个频道中
Get PRO
十二月 '24
+435
在43个频道中
Get PRO
十一月 '24
+465
在45个频道中
Get PRO
十月 '24
+469
在36个频道中
Get PRO
九月 '24
+552
在37个频道中
Get PRO
八月 '24
+456
在37个频道中
Get PRO
七月 '24
+510
在43个频道中
Get PRO
六月 '24
+412
在36个频道中
Get PRO
五月 '24
+531
在37个频道中
Get PRO
四月 '24
+666
在37个频道中
Get PRO
三月 '24
+774
在34个频道中
Get PRO
二月 '24
+754
在33个频道中
Get PRO
一月 '24
+722
在25个频道中
Get PRO
十二月 '23
+1 518
在25个频道中
Get PRO
十一月 '23
+639
在8个频道中
Get PRO
十月 '23
+833
在23个频道中
Get PRO
九月 '23
+1 249
在0个频道中
Get PRO
八月 '23
+815
在0个频道中
Get PRO
七月 '23
+782
在0个频道中
Get PRO
六月 '23
+457
在0个频道中
Get PRO
五月 '23
+809
在0个频道中
Get PRO
四月 '23
+460
在0个频道中
Get PRO
三月 '23
+1 064
在0个频道中
Get PRO
二月 '23
+599
在0个频道中
Get PRO
一月 '23
+673
在0个频道中
Get PRO
十二月 '22
+724
在0个频道中
Get PRO
十一月 '22
+1 054
在0个频道中
Get PRO
十月 '22
+543
在0个频道中
Get PRO
九月 '22
+593
在0个频道中
Get PRO
八月 '22
+699
在0个频道中
Get PRO
七月 '22
+678
在0个频道中
Get PRO
六月 '22
+891
在0个频道中
Get PRO
五月 '22
+429
在0个频道中
Get PRO
四月 '22
+372
在0个频道中
Get PRO
三月 '22
+566
在0个频道中
Get PRO
二月 '22
+250
在0个频道中
Get PRO
一月 '22
+399
在0个频道中
Get PRO
十二月 '21
+382
在0个频道中
Get PRO
十一月 '21
+347
在0个频道中
Get PRO
十月 '21
+545
在0个频道中
Get PRO
九月 '21
+555
在0个频道中
Get PRO
八月 '21
+755
在0个频道中
Get PRO
七月 '21
+629
在0个频道中
Get PRO
六月 '21
+502
在0个频道中
Get PRO
五月 '21
+706
在0个频道中
Get PRO
四月 '21
+730
在0个频道中
Get PRO
三月 '21
+695
在0个频道中
Get PRO
二月 '21
+760
在0个频道中
Get PRO
一月 '21
+790
在0个频道中
Get PRO
十二月 '20
+26 304
在0个频道中
日期
订阅者增长
提及
频道
11 六月+1
10 六月+7
09 六月0
08 六月+4
07 六月+2
06 六月+4
05 六月+5
04 六月+10
03 六月+2
02 六月+4
01 六月+1
频道帖子
👀 5 тайп-чекеров в Python — нужно ли запускать все? mypy, Pyrefly, Pyright, ty, Zuban — и это ещё не конец списка. Как поддерживать библиотеку когда каждый чекер хочет свои аннотации. Короткий ответ: не нужно гонять все пять по исходникам. Нужно гонять их по тестам. Когда вы запускаете тайп-чекер на внутреннем коде — вы проверяете свою логику. Каким чекером пользоваться внутри — ваш выбор. Но каким чекером пользуются ваши пользователи — не ваш выбор. Они придут с mypy, кто-то с Pyright, кто-то уже перешёл на ty. И все они будут взаимодействовать с вашим публичным API. Запускайте как можно больше чекеров на тестах → убедитесь что публичный API работает для всех. Пример из Polars Вот во что превращается код когда пытаешься угодить всем чекерам сразу в исходниках:

@overload  # type: ignore[override]
def __eq__(  # pyrefly: ignore[bad-override]
    self, other: pl.DataTypeExpr
) -> pl.Expr: ...

@overload
def __eq__(self, other: PolarsDataType) -> bool: ...

def __eq__(  # ty: ignore[invalid-method-override]
           # pyright: ignore[reportIncompatibleMethodOverride]
    self, other: pl.DataTypeExpr | PolarsDataType
) -> pl.Expr | bool:
4 разных type-ignore комментария на 7 строк. Кодовая база быстро превращается в кашу. А вот тест на тот же метод — все 5 чекеров проходят его без единой ошибки:

def test_dtype_time_units() -> None:
    for time_unit in DTYPE_TEMPORAL_UNITS:
        assert pl.Datetime == pl.Datetime(time_unit)
        assert pl.Duration == pl.Duration(time_unit)
Чекеры расходятся в том как должна быть написана реализация, но соглашаются в том как API ведёт себя снаружи. А пользователям важно именно это. Практический совет ✳️ Тесты → запускайте максимум чекеров ✳️ Исходники → выберите один, который вам нравится ✳️ Для строгой проверки → Pyrefly (быстрый, соответствует спецификации) ✳️ Для постепенного добавления типов → mypy в мягком режиме 📍 Навигация: ВакансииЗадачиСобесы 📍 Канал в Max Библиотека питониста #буст

2
🗺️ Так работает алгоритм Дейкстры Алгоритм Дейкстры — один из самых известных алгоритмов поиска кратчайшего пути в графе. Им
🗺️ Так работает алгоритм Дейкстры Алгоритм Дейкстры — один из самых известных алгоритмов поиска кратчайшего пути в графе. Именно на подобных идеях строятся навигаторы, системы маршрутизации и многие сетевые протоколы. 📍 Навигация: Вакансии • Задачи • Собесы 📍 Канал в Max Библиотека питониста #буст
1 468
3
🐍 Будущее JIT в CPython оказалось под вопросом Steering Council Python официально потребовал подготовить Standards Track PEP, который должен обосновать включение JIT-компилятора в состав CPython как полноценной и поддерживаемой функции, а не экспериментального проекта. 🔛 JIT разрабатывается уже несколько лет и недавно показал заметный прирост производительности. Однако совет считает, что проект такого масштаба требует формального обсуждения и четких обязательств по поддержке. До принятия PEP разработчиков попросили приостановить добавление новых возможностей, оптимизаций и улучшений производительности JIT. Разрешены только исправления ошибок и уязвимостей. В документе должны быть рассмотрены: ✔️ долгосрочная поддержка и сопровождение JIT; ✔️ совместимость с существующими возможностями CPython (free-threading, профилировщики, отладчики и др.); ✔️ измеримые цели по производительности и срокам реализации; ✔️ взаимодействие с другими JIT-решениями, включая CinderX, Numba и PyTorch; ✔️ стабильность текущей архитектуры и планы её развития. На подготовку и принятие PEP отведено 6 месяцев. Если за это время предложение не будет одобрено, код JIT будет удалён из основной ветки CPython, а дальнейшая разработка продолжится вне официального репозитория Python. Фактически речь идёт не об отмене JIT, а о том, чтобы определить его статус, гарантии и будущее внутри экосистемы Python. 📍 Навигация: Вакансии • Задачи • Собесы 📍 Канал в Max Библиотека питониста #буст
581
4
🔥 Инженерная методичка по ИИ от Романа Барлоса (Team Lead в Yandex Cloud) Продолжаем делиться экспертизой команды курса «Раз
🔥 Инженерная методичка по ИИ от Романа Барлоса (Team Lead в Yandex Cloud) Продолжаем делиться экспертизой команды курса «Разработка ИИ-агентов». Роман собрал мастхев-инструменты и ключевые работы для тех, кто хочет выйти за рамки вайбкодинга. 🛠️ Полезные инструменты: • Understand Anything — граф знаний по коду и зависимостям. • DeepTutor — open-source платформа для персонализированного обучения. • Superpowers — набор практик для системной разработки с ИИ. • Awesome Agent Skills — коллекция навыков для ИИ-агентов. 📚 Ключевые работы по LLM: • Attention Is All You Need (2017) — архитектура Transformer. • GPT-1 (2018) — начало эпохи GPT. • GPT-2 (2019) — решение новых задач без дообучения. • GPT-3 (2020) — обучение на примерах из запроса. • InstructGPT (2022) — RLHF и современные чат-боты. На курсе Роман выступает консультантом программы: помогает формировать содержание уроков с опорой на актуальные инженерные практики». Занять свое место на потоке: 👉 Курс «Разработка ИИ-агентов»
1 516
5
😎 Знакомьтесь с экспертом Proglib.academy: Senior Software Engineer и Team Lead в Yandex Cloud Роман Барлос Роман — консульт
😎 Знакомьтесь с экспертом Proglib.academy: Senior Software Engineer и Team Lead в Yandex Cloud Роман Барлос Роман — консультант нашего курса «Разработка ИИ-агентов». Он работает на стыке cloud-native архитектуры и AI, активно внедряя современные ИИ-подходы в реальные процессы разработки. За что его ценит IT-комьюнити? 🟣 Team Lead и AI-евангелист в команде UX Yandex Cloud 14-лет в разработке. Занимается AI-адопшеном в команде Yandex Cloud, проводит мастер-классы и продвигает лучшие практики для повышения эффективности разработчиков. 🟣 Техлид Sourcecraft Code Assistant С сильным практическим бэкграундом принимал участие как технический лид в создании мощного AI-расширения для VS Code. 🟣 Создатель полезного Open Source Разрабатывает утилиты, которые позволяют быстро начать эксперименты с инференсом и агентами в локальном окружении: например, набор скриптов vllm-setup для быстрого запуска окружения и mini-proxy — минималистичный прокси для OpenAI API провайдеров. 🟣 Автор интерактивных ML-визуализаций Объясняет сложные концепции наглядно. Создал серию залипательных обучающих материалов, где можно вживую пощупать работу сетей Хопфилда, машин Больцмана и VC-размерности. Роман регулярно делится инженерными наработками, инсайтами и экспертизой в своем авторском Telegram-канале На курсе Роман выступает консультантом программы: он помогает формировать содержание уроков с опорой на актуальные инженерные практики и жесткие требования индустрии. Узнать больше о программе и разработке автономных систем: 👉 Курс «Разработка ИИ-агентов» Так, продолжаем знакомить вас с командой? 👍 — Да, ждем новых лиц 🔥 — Жду полезные материалы от Романа
1 594
6
🐍 Python For Loops Explained: от основ до практических примеров Циклы — одна из первых и самых важных тем в Python. Отличный+9
🐍 Python For Loops Explained: от основ до практических примеров Циклы — одна из первых и самых важных тем в Python. Отличный материал для новичков и тех, кто хочет быстро освежить знания по одной из самых базовых и полезных конструкций Python. 📍 Навигация: Вакансии • Задачи • Собесы 📍 Канал в Max Библиотека питониста #буст
1 891
7
🛠 Прокачиваем Claude Code и Codex: топовые скилы, которые сделают из твоего ИИ сеньора Пока все просто закидывают нейронки базовыми промптами, продвинутые инженеры уже вовсю собирают и используют кастомные «скилы» (модули расширения). Они превращают generic-модели в специализированных бойцов. Забирайте подборку ультимативных скилов для AI-агентов, которые закроют большинство ваших повседневных болей: cybrix-skills — скил для Claude Code, который позволяет одной командой задеплоить статический сайт на хостинг book-to-skill — скил для Claude Code, превращающий PDF и EPUB в структурированные скилы. На выходе директория ~/.claude/skills/<имя-книги>/ с файлами по главам, глоссарием, списком паттернов и шпаргалкой skills — набор скилов для AI-агентов, решающих типичные проблемы разработки: непонимание задачи, многословность агента, нерабочий код и архитектурный хаос hatch-pet — скил Codex для создания виртуального питомца Taste-skill — это коллекция скилов, которая помогает создавать премиальные фронтенды с продуманной типографикой, анимацией и композицией Graphify — скил, который одной командой /graphify строит граф знаний всего проекта (код, документы, PDF, изображения, видео) и позволяет задавать вопросы по архитектуре проекта  🔹 Курс о том, как внедрять AI-логику в бэкенд и сохранять стабильность сервиса 🔹 Получить консультацию менеджера 🔹 Сайт Академии 🔹 Сайт Proglib 🏃‍♀️ Proglib Academy #буст
1 941
8
⚡️ Продолжаем знакомить вас с экспертами курса AgentOps! — Сергей Нотевский расскажет, как выстроить FinOps для AI-продуктов:
⚡️ Продолжаем знакомить вас с экспертами курса AgentOps! — Сергей Нотевский расскажет, как выстроить FinOps для AI-продуктов: оптимизировать затраты на разработку и продакшен, внедрить model routing, semantic cache и систему алертов для контроля расходов — Эмиль Сатаев разберет Context Engineering: управление контекстом, защиту от prompt injection, работу с длинными контекстами и построение безопасного пайплайна входа для AI-систем — Михаил Бондаревский покажет, как подготовить инфраструктуру для AI-агентов: Docker, sandboxing, streaming, docker-compose и воспроизводимое окружение для разработки и продакшена — Мурат Хажгериев расскажет про Enterprise Integrations & MCP: когда MCP действительно нужен, как подключать внешние сервисы и реализовывать интеграции с OAuth2 delegation — Герман Сабиров разберет Governance & Compliance для AI-систем: data flow, audit logs, требования 152-ФЗ, локализацию данных и построение compliance-подхода на уровне архитектуры Курс для backend-разработчиков, тимлидов и LLM инженеров о том, как внедрять AI-логику в бэкенд IT-продуктов и сохранять стабильность сервиса. 👉 Изучить обновленную программу AgentOps и занять место.
1 972
9
🆕 Вышел PyPy 7.3.23: обновление для Python 2.7 и Python 3.11 Команда PyPy выпустила версию 7.3.23 — небольшой, но полезный релиз с исправлениями ошибок и улучшениями совместимости. Что изменилось: 🔹 Исправлено слишком агрессивное предупреждение о неиспользуемых coroutine. 🔹 Устранены проблемы с множественным наследованием в C-расширениях. 🔹 Обновлён байткод-интерпретатор: теперь используются exception tables вместо специальных opcode-инструкций. Благодаря этому вывод dis стал гораздо ближе к формату CPython. На производительность изменение пока не влияет. Релиз включает два интерпретатора: • PyPy2.7 — совместим с Python 2.7 и стандартной библиотекой CPython 2.7.18+ • PyPy3.11 — совместим с Python 3.11 и стандартной библиотекой CPython 3.11.15 Для справки: PyPy — это альтернативная реализация Python, которая выступает как drop-in replacement для CPython. Главное преимущество — встроенный JIT-компилятор, который во многих сценариях позволяет выполнять Python-код заметно быстрее без изменений в самом приложении. 📍 Навигация: Вакансии • Задачи • Собесы 📍 Канал в Max Библиотека питониста #буст
1 756
10
🔥 Python Roadmap Это подробное руководство и дорожная карта, которая помогает освоить Python, охватывая ключевые концепции,
🔥 Python Roadmap Это подробное руководство и дорожная карта, которая помогает освоить Python, охватывая ключевые концепции, инструменты и технологии для обучения профессии разработчика. 😸 Ссылка 🔹 Курс «Программирование на языке Python» 🔹 Получить консультацию менеджера 🔹 Сайт Академии 🔹 Сайт Proglib 🏃‍♀️ Азбука айтишника #карьерныйкоммит
1 959
11
➡️ Два бага из-за области видимости в Python — и как их избежать Приложение работает нормально. Открываешь вторую вкладку — данные не те. Тесты проходят по отдельности, но падают вместе. Причина — объект на уровне модуля. Проблема 1: слишком много sharing Типичный паттерн в FastAPI-проектах: # database.py engine = create_engine("sqlite:///database.db") engine создаётся в момент импорта. Все модули, которые импортируют из database.py, используют один и тот же engine, один пул соединений, один файл БД. Тесты чистят базу через setup/teardown, но состояние всё равно утекает: автоинкремент ID, кэш метаданных, внутреннее состояние SQLite. Тест assert id == 1 проходит первым, но падает если запустить после другого теста. Фикс — создавать engine на каждый тест: @pytest.fixture def engine(): engine = create_engine("sqlite://", echo=False) SQLModel.metadata.create_all(engine) yield engine engine.dispose() In-memory БД, никакого shared state, никакой уборки. Проблема 2: слишком мало sharing Обратная ситуация. Зависимость FastAPI создаёт новый экземпляр на каждый запрос: def get_data_source() -> DataSource: return FakeDataSource(...) # новый объект каждый раз Каждая вкладка браузера получает свой FakeDataSource со своим состоянием с нуля. Вкладка А показывает одно, вкладка Б — другое. Никакой общей реальности нет. Фикс — app.state: @asynccontextmanager async def lifespan(app: FastAPI): app.state.data_source = get_data_source() yield def get_data_source(request: Request) -> DataSource: return request.app.state.data_source Один экземпляр на весь процесс, легко подменяется в тестах через dependency_overrides. Правило одной строкой Если объект хранит мутабельное состояние — выбирай его скоуп осознанно. Слишком широкий (модуль) — тесты текут друг в друга. Слишком узкий (каждый запрос) — нет общего состояния. Константы и чистые значения на уровне модуля — ок. Ресурсы (DB engine, HTTP клиент, кэш, пул соединений) — нет. 📍 Навигация: Вакансии • Задачи • Собесы 📍 Канал в Max Библиотека питониста #буст
1 778
12
Python профилировка — где теряется время в коде Код работает медленно, но непонятно где. Вместо того чтобы гадать — есть инструменты. Шпаргалка по всем основным. Быстрый замер — time import time start = time.perf_counter() my_function() print(f"{time.perf_counter() - start:.4f}s") Для грубой оценки. perf_counter() точнее чем time() Точное сравнение — timeit import timeit timeit.timeit("[x**2 for x in range(1000)]", number=10000) # В Jupyter: %timeit my_function() Где тормозит — cProfile import cProfile cProfile.run("my_function()") # Сохранить для анализа: cProfile.run("my_function()", "output.prof") # В Jupyter: %prun my_function() Смотреть на tottime (время только в функции) и cumtime (с учётом вызовов внутри) Какая строка тормозит — line_profiler # pip install line_profiler @profile def my_function(): ... kernprof -l -v script.py # В Jupyter: %load_ext line_profiler %lprun -f my_function my_function() Память — memory_profiler # pip install memory_profiler @profile def my_function(): ... python -m memory_profiler script.py # В Jupyter: %load_ext memory_profiler %memit my_function() Визуализация — snakeviz # pip install snakeviz snakeviz output.prof # Откроет браузер с интерактивной диаграммой Когда что использовать: — Где тормозит? → cProfile + snakeviz — Какая строка? → line_profiler — A быстрее B? → timeit — Память утекает? → memory_profiler 📍 Навигация: Вакансии • Задачи • Собесы 📍 Канал в Max Библиотека питониста #буст
1 606
13
⚡️ Последний шанс забрать курсы со СКИДКОЙ 40%! Прокачайте свой мозг правильно До конца акции вы можете воспользоваться специ
⚡️ Последний шанс забрать курсы со СКИДКОЙ 40%! Прокачайте свой мозг правильно До конца акции вы можете воспользоваться специальными ценами на самые востребованные IT-направления. Круто и выгодно прокачать свои скиллы, чтобы получить оффер, уехать на Бали и больше не быть онлайн 😎 ➡️ Разработка AI-агентов — от 49 000 ₽ (вместо 69 000 ₽) Курс про контролируемую разработку ИИ-агентов: качество, стоимость, наблюдаемость и тестирование. С первого занятия — только практическая работа. ➡️ Курс AgentOps — 129 000 ₽ (вместо 149 000 ₽) Профессиональный трек для разработчиков и LLM инженеров о том, как правильно внедрять AI-логику в бэкенд и сохранять железную стабильность сервиса. ➡️ Математика для Data Science — от 29 990 ₽ (вместо 39 990 ₽) Вы научитесь решать сложные математические задачи, которые дают на собеседованиях на позицию дата-сайентиста в бигтехе. Отличная база для мощного старта в DS. ➡️ Курс Специалист по ИИ — 89 000 ₽ (вместо 113 900 ₽) Комплексная программа для получения профессии в сфере ИИ с нуля. За 8 месяцев вы соберете сильное портфолио из 5 реальных проектов и дипломной работы. ➡️ Архитектуры и шаблоны проектирования — 27 990 ₽ (вместо 37 900 ₽) Интенсив для разработчиков, который поможет освоить основные паттерны проектирования и прокачать навыки архитектора программного обеспечения. 🌸 Выбирайте направление, оставляйте заявку на сайте распродажи, и наш менеджер подробно вас проконсультирует
1 635
14
📚Напоминаем про наш полный курс «Самоучитель по 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
1 808
15
😱 Как правильно валидировать BST на Python (и не завалить интервью) Задача Validate Binary Search Tree — одна из тех, что ре
😱 Как правильно валидировать BST на Python (и не завалить интервью) Задача Validate Binary Search Tree — одна из тех, что регулярно всплывают на coding interviews. И большинство кандидатов сначала решают её неправильно. Типичная ошибка — проверять только родителя: if node.left and node.left.val >= node.val: return False Проблема в том, что в BST ограничения наследуются от всех предков, а не только от текущего узла. Например, вот это дерево невалидно: 10 / \ 5 15 / \ 6 20 Потому что 6 находится справа от 10, а значит должно быть больше 10, даже если 6 < 15. Самый сильный и interview-friendly подход — min/max bounds pattern. Идея простая: - root начинается с диапазона (-∞, +∞) - при движении влево текущий node становится верхней границей - при движении вправо — нижней границей - каждый узел должен удовлетворять: min < node.val < max Python-решение: def is_valid_bst(root): def validate(node, min_val, max_val): if not node: return True if node.val <= min_val or node.val >= max_val: return False return ( validate(node.left, min_val, node.val) and validate(node.right, node.val, max_val) ) return validate(root, float("-inf"), float("inf")) Почему этот подход любят на интервью: - показывает понимание BST invariant - O(n) по времени - O(h) по памяти (stack depth) - легко объяснить вслух интервьюеру Частые edge cases, про которые забывают: • пустое дерево → True • один node → True • duplicate values → обычно invalid BST • extreme integer values → в Java/C# лучше использовать Long, а не Integer Какую binary tree задачу вам чаще всего давали на интервью? 📍 Навигация: Вакансии • Задачи • Собесы 📍 Канал в Max Библиотека питониста #буст
1 435
16
🦾🧠🏋️ Качаем мозги к лету! Все готовятся к пляжному сезону, а мы предлагаем прокачать хард-скилы, чтобы забрать крутой оффе
🦾🧠🏋️ Качаем мозги к лету! Все готовятся к пляжному сезону, а мы предлагаем прокачать хард-скилы, чтобы забрать крутой оффер, строить продукты будущего и работать из любой точки мира 😎 ⚡️ Распродажа @proglib_academy: забирайте самые актуальные образовательные треки по сниженным ценам! ➡️ Разработка AI-агентов — от 49 000 ₽ (вместо 69 000 ₽). ➡️ Курс AgentOps — 129 000 ₽ (вместо 149 000 ₽). ➡️ Математика для разработки AI-моделей — 23 990 ₽ (вместо 31 990 ₽). ➡️ ML для старта в Data Science — 28 990 ₽ (вместо 38 990 ₽). Почему мы? ⭐️Учим для продакшена. Наши программы заточены под реальные задачи бизнеса: как не слить бюджет на токены, как заставить LLM работать стабильно в бэкенде и как выстроить отказоустойчивую архитектуру. ⭐️Спикеры — суровые практики. Вы будете перенимать опыт у действующих AI-архитекторов, тимлидов и ML-инженеров из топовых IT-компаний. ⭐️Комплексный подход. Мы даем как мощный математический фундамент для понимания моделей «под капотом», так и передовые инструменты оркестрации агентов. ⭐️Много практики и фидбека. Вебинары, десятки практических заданий и живое общение с экспертами в чате Telegram на протяжении всего обучения. ⏳ Оставляйте заявку и бронируйте место со СКИДКОЙ 40%
1 642
17
🙂 Что такое Flask? В мире Python-разработки все делятся на два лагеря: те, кто берет тяжелую Django, и те, кто выбирает Flas
🙂 Что такое Flask? В мире Python-разработки все делятся на два лагеря: те, кто берет тяжелую Django, и те, кто выбирает Flask. Flask - это микрофреймворк. «Микро» значит в нем нет ничего лишнего из коробки. Вот как это работает: • Свобода Django дает тебе сразу всё: админку, базу, авторизацию. Flask дает только базу (роутинг и шаблоны). Итог: ты сам выбираешь, какую базу данных подключить и как строить архитектуру. • Легкий старт Простейшее приложение на Flask пишется в 5 строк кода. Итог: это идеальный выбор для маленьких сервисов, API или микросервисов. Не нужно разворачивать огромную структуру ради одной функции. • Гибкость через расширения Нужна админка? Ставишь Flask-Admin. Нужна база? Flask-SQLAlchemy. Итог: твой проект весит ровно столько, сколько ему нужно, без лишнего «жира» в коде. • Масштабируемость Кажется, что Flask только для маленьких сайтов. Но на нем работают части систем в Netflix, Reddit и Airbnb. Итог: при прямых руках на нем можно поднять проект любой сложности. Проблема в том, что свобода Flask ловушка для новичков. Без понимания архитектуры твой проект быстро превратится в спагетти. На чем планируете писать свой первый (или следующий) бэкенд? ❤️ — Flask, люблю минимализм 🔥 — Django, пусть всё будет из коробки 🔹 Курс «Программирование на языке Python» 🔹 Получить консультацию менеджера 🔹 Сайт Академии 🔹 Сайт Proglib 🏃‍♀️ Азбука айтишника #ликбез
1 597
18
🧪 Перестаньте вручную писать десятки edge-case тестов Обычный подход к тестированию выглядит так: придумать странный input → написать тест → проверить поведение Так можно покрыть десятки сценариев и всё равно пропустить баг. Именно это часто происходит с edge cases. Например, для URL-нормализатора можно написать десятки тестов с «необычными» URL, но упустить случай, когда вход состоит только из пробелов. Функция внезапно вернёт пустую строку — а тестов на это не окажется. Здесь и помогает Hypothesis — библиотека для property-based testing. Вместо того чтобы перечислять конкретные примеры, описывается свойство, которое должно быть истинным для любого входа. Обычный тест: def test_round_trip_specific(): assert decode(encode("hello world")) == "hello world" Property-based тест: from hypothesis import given from hypothesis import strategies as st @given(st.text()) def test_round_trip_any_string(s): assert decode(encode(s)) == s Теперь библиотека сама генерирует сотни и тысячи вариантов: - пустые строки - unicode-символы - пробелы - null bytes - очень длинные значения - нестандартные boundary cases И цель у неё одна — сломать функцию. Если найден баг, Hypothesis автоматически уменьшает вход до минимального воспроизводимого примера. Получается что-то вроде: Falsifying example: url='' Три свойства, которые полезны почти в любом проекте 1. Round-trip @given(st.text()) def test_encode_decode(s): assert decode(encode(s)) == s 2. Idempotency Повторное применение функции не должно менять результат. @given(st.text()) def test_normalize_idempotent(url): assert normalize(url) == normalize(normalize(url)) 3. Не должно падать Очень недооценённый сценарий: @given(st.text()) def test_parser_does_not_crash(s): try: parse(s) except ValueError: pass Такие тесты часто находят баги там, где никто их не ожидал. 📍 Навигация: Вакансии • Задачи • Собесы 📍 Канал в Max Библиотека питониста #буст
1 723
19
👇 Альтернативы `break` в Python, которые делают код чище break — полезная штука, когда нужно досрочно выйти из цикла. Но во многих случаях код можно сделать более читаемым и “питоничным”, используя встроенные инструменты Python. Вот несколько частых сценариев. 1. Проверить, есть ли значение в коллекции Вместо цикла с break: is_purple = False for color in colors: if color == "purple": is_purple = True break Используйте in: is_purple = "purple" in colors Проще, короче и зачастую быстрее. 2. Проверить, подходит ли хотя бы один элемент Было: has_big_score = False for score in scores: if score > 100: has_big_score = True break Стало: has_big_score = any( score > 100 for score in scores ) А если нужно проверить, что все элементы подходят — используйте all(). 3. Найти первый подходящий элемент Вместо: first_long_word = None for word in words: if len(word) > 4: first_long_word = word break Можно: first_long_word = next( (word for word in words if len(word) > 4), None ) next() + generator expression позволяют сразу взять первое совпадение. 4. Собирать элементы, пока условие истинно Было: result = [] for item in items: if not item: break result.append(item) Стало: from itertools import takewhile result = list(takewhile(bool, items)) takewhile() собирает элементы, пока условие возвращает True. Мини-шпаргалка: ✅ Проверить наличие → in ✅ Хоть один подходит → any() ✅ Все подходят → all() ✅ Найти первое совпадение → next() ✅ Собирать до условия → itertools.takewhile() 📍 Навигация: Вакансии • Задачи • Собесы 📍 Канал в Max Библиотека питониста #буст
1 862
20
🚨 Переводим Jupyter-ноутбуки в интерактивные дашборды Mercury — это Python-библиотека, которая позволяет создавать интеракти
🚨 Переводим Jupyter-ноутбуки в интерактивные дашборды Mercury — это Python-библиотека, которая позволяет создавать интерактивные веб-дашборды прямо из Jupyter notebooks. Особенно полезно для аналитиков, data scientists и ML-специалистов: можно делиться результатами анализа в удобном интерфейсе, не погружаясь в JavaScript, React или backend-разработку. Можно быстро превратить исследовательский ноутбук в понятный продукт для пользователей, которые не работают с кодом. На сайте Mercury есть много примеров и туториалов, чтобы быстро понять возможности инструмента и проверить, подходит ли он под ваши задачи. 📍 Навигация: Вакансии • Задачи • Собесы Библиотека питониста #буст
2 152