📚Напоминаем про наш полный курс «Самоучитель по 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
Мы написали и собрали для вас в одну подборку все 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
👍4👏1
PEP 747 принят — теперь можно типизировать сами аннотации
Типизация выходит на новый уровень: теперь можно описывать типы… для типов. Python всё увереннее движется в сторону статического анализа, и граница между «динамичным» и «строго типизированным» языком продолжает размываться.
Perl и R возвращаются, Python теряет 19% популярности?
Громкий заголовок, но паниковать рано. Рейтинги любят колебания, а экосистема Python по-прежнему гигантская. Хотя немного здоровой конкуренции языку точно не повредит.
LEGB и область видимости — неочевидные грабли
Local, Enclosing, Global, Built-in — правило простое, а баги из-за него иногда очень нет. Хороший разбор с примерами.
mmap в Python — быстрый I/O через отображение в память
Отличный инструмент для работы с большими файлами и бинарными форматами.
Шаблонные строки в Python 3.14
Больше контроля над интерполяцией данных — меньше сюрпризов в runtime.
ООП в Python за одну статью
Компактный, но системный разбор от базового класса до архитектурных принципов.
📍 Навигация: Вакансии • Задачи • Собесы
#свежак
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4❤2
Please open Telegram to view this post
VIEW IN TELEGRAM
😁27⚡1❤1😢1
⚡️ uv обошел Poetry по загрузкам
Это официально: согласно свежей статистике загрузок с PyPI, инструмент uv от команды Astral (авторов Ruff) обогнал Poetry.
Если вы всё еще используете Poetry, вот почему весь мир переходит на uv:
1️⃣ Безумная скорость: uv написан на Rust. Там, где Poetry тратит 10–15 секунд на разрешение зависимостей, uv справляется за 0.5 секунды. Разница не в процентах, а в десятки раз.
2️⃣ Всё в одном: uv заменяет собой целую пачку инструментов:
3️⃣ Глобальный кэш: uv не копирует пакеты в каждый проект. Он использует хардлинки, экономя гигабайты места на диске.
4️⃣ Нативность: uv максимально следует стандартам (PEP). Он не пытается «изобрести свой велосипед», а делает стандартные инструменты лучше.
Короткий чек-лист по переходу:
➕ Было:
➕ Было:
➕ Было:
📍 Навигация: Вакансии • Задачи • Собесы
🐸 Библиотека питониста
#буст
Это официально: согласно свежей статистике загрузок с PyPI, инструмент uv от команды Astral (авторов Ruff) обогнал Poetry.
Если вы всё еще используете Poetry, вот почему весь мир переходит на uv:
pip, poetry, pyenv, pipx и virtualenv. Один бинарник, который умеет всё — от установки версии Python до управления воркспейсами.Короткий чек-лист по переходу:
poetry install -> Стало: uv syncpoetry add requests -> Стало: uv add requestspoetry run python main.py -> Стало: uv run main.py📍 Навигация: Вакансии • Задачи • Собесы
#буст
Please open Telegram to view this post
VIEW IN TELEGRAM
👍26⚡4👾4🤔1😢1
🚀 Starlette наконец-то дозрел до версии 1.0
Если вы пишете на Python, то Starlette — это «серый кардинал» вашего стека. Вы можете не использовать его напрямую, но он крутится под капотом у FastAPI, Litestar и еще десятка фреймворков.
Том Кристи создал этот проект почти 8 лет назад (в 2018-м), и всё это время мы жили на версиях 0.x. И вот, наконец, вышел 1.0.0rc1.
Дело не только в красивой цифре. В 2026 году Starlette стал критической деталью в мире ИИ.
✔️ Он — база для Python MCP SDK (Model Context Protocol). Если вы строите агентов, которые должны общаться с внешним миром, вы скорее всего используете Starlette.
✔️ 10 миллионов скачиваний в день. Это буквально фундамент современного асинхронного веба.
В новой версии разработчики вырезали всё старое и неактуальное (deprecated), что копилось годами, и зафиксировали API.
👀 Если у вас FastAPI, просто подождите — обновление прилетит само как зависимость. Если же вы используете Starlette напрямую для своих микросервисов, самое время прогнать тесты на 1.0.0rc1.
🔗 Release Notes: https://clc.to/RevWVg
А вы когда-нибудь пробовали писать на чистом Starlette без FastAPI? Или считаете, что без Pydantic-валидации в вебе делать нечего?
📍 Навигация: Вакансии • Задачи • Собесы
🐸 Библиотека питониста
#буст
Если вы пишете на Python, то Starlette — это «серый кардинал» вашего стека. Вы можете не использовать его напрямую, но он крутится под капотом у FastAPI, Litestar и еще десятка фреймворков.
Том Кристи создал этот проект почти 8 лет назад (в 2018-м), и всё это время мы жили на версиях 0.x. И вот, наконец, вышел 1.0.0rc1.
Дело не только в красивой цифре. В 2026 году Starlette стал критической деталью в мире ИИ.
В новой версии разработчики вырезали всё старое и неактуальное (deprecated), что копилось годами, и зафиксировали API.
🔗 Release Notes: https://clc.to/RevWVg
А вы когда-нибудь пробовали писать на чистом Starlette без FastAPI? Или считаете, что без Pydantic-валидации в вебе делать нечего?
📍 Навигация: Вакансии • Задачи • Собесы
#буст
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥9❤1
Media is too big
VIEW IN TELEGRAM
🎨 Ast-visualizer превращает код в карту и графики
Проект Ast-visualizer предлагает перестать гадать, где в коде «тонкие места», и начать их видеть. Инструмент анализирует AST (абстрактное синтаксическое дерево) вашего проекта и строит на его основе наглядные отчеты.
Что умеет инструмент:
🔝 Интерактивные AST-деревья: Визуализация структуры отдельных файлов с цветовой подсветкой.
🔝 Radial View: Радиальный вид дерева. Позволяет одним взглядом понять, где в файле спрятаны самые «толстые» функции.
🔝 Тепловая карта сложности: Сложные участки кода (по Мейкейбу) подсвечиваются красным прямо в дереве.
🔝 Граф зависимостей: Показывает, как файлы связаны через импорты. Незаменимая вещь для поиска круговых зависимостей.
🔝 Dashboard поддержки: Рассчитывает индекс поддерживаемости (0–100) и выдает ТОП-5 кандидатов на рефакторинг.
Большинство AST-эксплореров просто рисуют дерево одного файла. Ast-visualizer идет дальше: он интерпретирует данные, объединяет их в масштабе всего репозитория и визуализирует в разных форматах — от радиальных схем до графиков сложности по строкам.
🔗 Попробовать на своем коде: https://clc.to/yV4wag
📍 Навигация: Вакансии • Задачи • Собесы
🐸 Библиотека питониста
#буст
Проект Ast-visualizer предлагает перестать гадать, где в коде «тонкие места», и начать их видеть. Инструмент анализирует AST (абстрактное синтаксическое дерево) вашего проекта и строит на его основе наглядные отчеты.
Что умеет инструмент:
🔝 Интерактивные AST-деревья: Визуализация структуры отдельных файлов с цветовой подсветкой.
🔝 Radial View: Радиальный вид дерева. Позволяет одним взглядом понять, где в файле спрятаны самые «толстые» функции.
🔝 Тепловая карта сложности: Сложные участки кода (по Мейкейбу) подсвечиваются красным прямо в дереве.
🔝 Граф зависимостей: Показывает, как файлы связаны через импорты. Незаменимая вещь для поиска круговых зависимостей.
🔝 Dashboard поддержки: Рассчитывает индекс поддерживаемости (0–100) и выдает ТОП-5 кандидатов на рефакторинг.
Большинство AST-эксплореров просто рисуют дерево одного файла. Ast-visualizer идет дальше: он интерпретирует данные, объединяет их в масштабе всего репозитория и визуализирует в разных форматах — от радиальных схем до графиков сложности по строкам.
🔗 Попробовать на своем коде: https://clc.to/yV4wag
📍 Навигация: Вакансии • Задачи • Собесы
#буст
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3🤩2🤔1
🌍 icu4py: правильная работа с текстом и локализацией
Если вы хоть раз делали интернационализацию (i18n) в Python, то знаете, какая это боль.
icu4py — современная библиотека-обертку, которая делает работу с Unicode приятной:
1. MessageFormat
Он сам разруливает правила множественного числа (plurals), которые в каждом языке свои:
— English: 0 files, 1 file, 5 files.
— French: 0 fichier (единственное число), 1 fichier, 2 fichiers.
С
2. Boundary Analysis
Разбить текст на предложения — это не просто поиск точки. Нужно учитывать кавычки, сокращения и специфику языка.
Класс
🔗 Установка:
📂 GitHub: https://clc.to/KdjSUQ
📍 Навигация: Вакансии • Задачи • Собесы
🐸 Библиотека питониста
#буст
Если вы хоть раз делали интернационализацию (i18n) в Python, то знаете, какая это боль.
Библиотека ICU (International Components for Unicode) — это мировой стандарт (её используют Chrome, macOS и VS Code), но в Python с ней всегда было сложно: либо древний неудобный API, либо мучения с установкой системных зависимостей.
icu4py — современная библиотека-обертку, которая делает работу с Unicode приятной:
1. MessageFormat
Он сам разруливает правила множественного числа (plurals), которые в каждом языке свои:
— English: 0 files, 1 file, 5 files.
— French: 0 fichier (единственное число), 1 fichier, 2 fichiers.
С
icu4py вам не нужно писать if count == 1 для каждого языка — библиотека сама знает стандарты Unicode для любой локали.2. Boundary Analysis
Разбить текст на предложения — это не просто поиск точки. Нужно учитывать кавычки, сокращения и специфику языка.
Класс
SentenceBreaker понимает контекст и не разрывает предложение на «т. д.» или внутри цитаты.🔗 Установка:
pip install icu4py📂 GitHub: https://clc.to/KdjSUQ
📍 Навигация: Вакансии • Задачи • Собесы
#буст
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2
За год мы провели три потока курса по ИИ-агентам, а теперь запускаем масштабное обновление!
В новом, четвёртом потоке мы учли все пожелания студентов, добавили большой блок про
В программе:
— практика в
— профессиональная оркестрация в
— продвинутый
— контроль экономики агентов: маршрутизация и кеширование запросов;
— развёртывание локальных опенсорс-моделей с соблюдением 152-ФЗ.
В честь старта продаж действует спецпредложение: 3 курса по цене 1 (два дополнительных курса в подарок).
Доступ к материалам для предварительной подготовки откроется сразу после оплаты.
По промокоду
👉 Присоединиться к четвёртому потоку и вывести агентов в прод
В новом, четвёртом потоке мы учли все пожелания студентов, добавили большой блок про
AgentOps и сместили фокус с базовых концепций на суровый инжиниринг. Написать пет-проект на Python легко, а вот сделать так, чтобы он не сливал бюджет на токены, не падал при нестандартных запросах и работал в проде — задача со звёздочкой.В программе:
— практика в
Jupyter: структурный вывод и типизация PydanticAI;— профессиональная оркестрация в
LangGraph и другая парадигма AutoGen;— продвинутый
RAG для продакшена и парсинг сложных документов;— контроль экономики агентов: маршрутизация и кеширование запросов;
— развёртывание локальных опенсорс-моделей с соблюдением 152-ФЗ.
В честь старта продаж действует спецпредложение: 3 курса по цене 1 (два дополнительных курса в подарок).
Доступ к материалам для предварительной подготовки откроется сразу после оплаты.
По промокоду
Agent забирайте скидку 10 000 ₽ (89 000 ₽ вместо 99 000 ₽). Успейте занять место до 28 февраля!👉 Присоединиться к четвёртому потоку и вывести агентов в прод
❤1
Please open Telegram to view this post
VIEW IN TELEGRAM
😁28💯7🌚1
🛠 cattrs: де-сериализация в Python
cattrs берет на себя всю грязную работу по превращению «сырых» словарей в красивые структурированные объекты и обратно. При этом ваши модели остаются чистыми — в них нет ни строчки кода, отвечающего за JSON.
Из главного:
1. Разделение ответственности: Ваши классы данных — это просто данные. Логика преобразования живет отдельно в объекте Converter.
2. Поддержка всего и вся: Из коробки работают attrs, dataclasses, TypedDict, NewType, сложные Union и даже новые Type Aliases из Python 3.12.
3. Скорость: cattrs генерирует оптимизированный код для преобразования «на лету».
💻 Пример в три строки
🔗 Документация
📍 Навигация: Вакансии • Задачи • Собесы
🐸 Библиотека питониста
#буст
cattrs берет на себя всю грязную работу по превращению «сырых» словарей в красивые структурированные объекты и обратно. При этом ваши модели остаются чистыми — в них нет ни строчки кода, отвечающего за JSON.
Из главного:
1. Разделение ответственности: Ваши классы данных — это просто данные. Логика преобразования живет отдельно в объекте Converter.
2. Поддержка всего и вся: Из коробки работают attrs, dataclasses, TypedDict, NewType, сложные Union и даже новые Type Aliases из Python 3.12.
3. Скорость: cattrs генерирует оптимизированный код для преобразования «на лету».
💻 Пример в три строки
from attrs import define
from cattrs import structure, unstructure
@define
class User:
id: int
tags: list[str]
# Превращаем словарь в объект (Structuring)
user = structure({'id': 1, 'tags': ['python', 'cattrs']}, User)
# User(id=1, tags=['python', 'cattrs'])
# Превращаем объект обратно в словарь (Unstructuring)
dict_data = unstructure(user)
🔗 Документация
📍 Навигация: Вакансии • Задачи • Собесы
#буст
Please open Telegram to view this post
VIEW IN TELEGRAM
❤4👍3
🛠 Проблема: неопределенность возвращаемого типа
Представьте функцию, которая генерирует конфиг. Если действие —
Для Mypy такая функция возвращает «или словарь, или список». Если вы попытаетесь использовать результат как чистый
✨ Решение: использование @overload
Декоратор
📍 Навигация: Вакансии • Задачи • Собесы
🐸 Библиотека питониста
#буст
Представьте функцию, которая генерирует конфиг. Если действие —
DELETE, она возвращает список путей (`list[str]`), в остальных случаях — словарь (`dict`).
def generate_config(context: dict, action: Action) -> dict | list[str]:
...
Для Mypy такая функция возвращает «или словарь, или список». Если вы попытаетесь использовать результат как чистый
dict, тайп-чекер выдаст ошибку, даже если вы уверены в типе.✨ Решение: использование @overload
Декоратор
@overload позволяет описать конкретные комбинации входных и выходных данных:
from typing import overload, Literal
@overload
def generate_config(context: dict, action: Literal[Action.DELETE]) -> list[str]: ...
@overload
def generate_config(context: dict, action: Literal[Action.MODIFY, Action.ADD]) -> dict: ...
def generate_config(context: dict, action: Action) -> dict | list[str]:
# Реальная логика здесь
...
📍 Навигация: Вакансии • Задачи • Собесы
#буст
Please open Telegram to view this post
VIEW IN TELEGRAM
👍14❤3
Последний шанс: 3 курса по цене 1 и запуск AI-агентов в продакшн
Писать простые скрипты к API на
В обновлённой программе фокус смещён на жёсткий инжиниринг и вывод в прод. Вы освоите типизацию через
Почему нельзя откладывать:
— масштабная акция «3 курса по цене 1» сгорит уже завтра;
— промокод
— сразу после оформления открываются материалы для подготовки — начать учиться можно прямо сейчас.
Забронировать место на курсе и забрать бонусы до 28 февраля
Писать простые скрипты к API на
Python — весело, но тренд 2026 года — это сложные мультиагентные системы. Как контролировать затраты на LLM, управлять оркестрацией и не нарушить 152-ФЗ?В обновлённой программе фокус смещён на жёсткий инжиниринг и вывод в прод. Вы освоите типизацию через
PydanticAI, научитесь строить ReAct-циклы, работать с LangGraph и AutoGen, внедрять продвинутый RAG и MCP. Все ключевые навыки в одном месте: AgentOps, time-travel дебаггинг, управление браузером, human-in-the-loop и развёртывание open-source моделей в закрытых контурах.Почему нельзя откладывать:
— масштабная акция «3 курса по цене 1» сгорит уже завтра;
— промокод
Agent на скидку 10 000 рублей действует последние часы;— сразу после оформления открываются материалы для подготовки — начать учиться можно прямо сейчас.
Забронировать место на курсе и забрать бонусы до 28 февраля
❤4
🎯 Шпаргалка по переводу чисел между базами
Python позволяет легко переключаться между десятичной, двоичной, восьмеричной и шестнадцатеричной системами.
📍 Навигация: Вакансии • Задачи • Собесы
🐸 Библиотека питониста
#буст
Python позволяет легко переключаться между десятичной, двоичной, восьмеричной и шестнадцатеричной системами.
📍 Навигация: Вакансии • Задачи • Собесы
#буст
Please open Telegram to view this post
VIEW IN TELEGRAM
❤5👍4👾1
🛠 Валидация в Runtime через Type Annotations
Если вы использовали Pydantic или FastAPI, вы видели, как аннотации типов магическим образом проверяют входящие данные. Но как реализовать это самому, используя только стандартную библиотеку Python?
Ключ к разгадке —
1️⃣ Как достать метаданные
Для этого используется функция
2️⃣ Реализация своего валидатора
Автор предлагает элегантное решение: использовать frozen dataclasses и метод
Основные шаги:
1. Перебираем все аннотации класса.
2. Ищем в метаданных объекты, которые можно вызвать (`callable`).
3. Применяем их к значениям атрибутов.
4. Используем
3️⃣ Группировка ошибок (Exception Groups)
В Python 3.11 появились
4️⃣ Классы против Замыканий
Автор сравнивает два подхода к созданию правил:
✅ Вызываемые классы (как в Pydantic): Удобно читать, легко настраивать через аргументы
✅ Замыкания (Closures) и
🔗 Ссылка на оригинальный пост
📍 Навигация: Вакансии • Задачи • Собесы
🐸 Библиотека питониста
#буст
Если вы использовали Pydantic или FastAPI, вы видели, как аннотации типов магическим образом проверяют входящие данные. Но как реализовать это самому, используя только стандартную библиотеку Python?
Ключ к разгадке —
typing.Annotated. Этот механизм позволяет добавлять произвольные метаданные к типам, которые Python игнорирует при проверке типов, но которые мы можем прочитать во время выполнения программы.Для этого используется функция
get_type_hints с флагом include_extras=True.
import typing as t
from dataclasses import dataclass
@dataclass
class User:
age: t.Annotated[int, "должен быть > 0"]
# Получаем: {'age': typing.Annotated[int, 'должен быть > 0']}
annotations = t.get_type_hints(User, include_extras=True)
Автор предлагает элегантное решение: использовать frozen dataclasses и метод
__post_init__ для автоматической проверки полей сразу после создания объекта.Основные шаги:
1. Перебираем все аннотации класса.
2. Ищем в метаданных объекты, которые можно вызвать (`callable`).
3. Применяем их к значениям атрибутов.
4. Используем
object.__setattr__, чтобы обойти ограничение неизменяемости (frozen).В Python 3.11 появились
ExceptionGroup, и автор мастерски применяет их здесь. Вместо того чтобы падать на первой же ошибке, валидатор собирает все нарушения и выбрасывает их одним списком. Это критично для удобства API и фронтенда.
class ValidationErrorGroup(ExceptionGroup):
pass
# В итоге при ошибке вы получите детальный отчет:
# ValidationErrorGroup: Validation Errors (2 sub-exceptions)
# ├── ValueError: -1 must be > to 0 (attribute 'x')
# └── ValueError: String is empty (attribute 'y')
Автор сравнивает два подхода к созданию правил:
__init__.partial: Более функциональный стиль, который позволяет изящно комбинировать проверки, например: Annotated[int, gte(0), lt(100)].🔗 Ссылка на оригинальный пост
📍 Навигация: Вакансии • Задачи • Собесы
#буст
Please open Telegram to view this post
VIEW IN TELEGRAM
❤5👍2
Python — это мощь, но готов ли ты построить на нём (и не только) бизнес? 🚀
Proglib App ищет технического кофаундера. Это EdTech-платформа для разработчиков: курсы, интерактивные квизы и ИИ-тьюторы. MVP уже работает, юзеры растут, и нам нужен человек, способный взять на себя техчасть.
Это шанс выйти за пределы скриптов и стать архитектором продукта, которым пользуются тысячи коллег.
🛠️ Стек и инструменты:
TypeScript, React 18, Express 5, PostgreSQL, Drizzle ORM. Используем Claude Code и Cursor.
Твои задачи:
• Проектировать масштабируемую архитектуру и пилить фичи. • Внедрять ИИ-агентов в образовательный процесс. • Работать автономно в связке с основателем.
Ожидания:
• Уверенное владение TS, React, Node.js и SQL. • Понимание, как устроены современные веб-сервисы. • Самостоятельность: взял задачу — довёл до результата.
Удалёнка, гибкий график и полная свобода в принятии технических решений.
Готов делать сервис, который изменит обучение в IT? Пиши о себе и кидай GitHub 👇
@proglibrary_feedback_bot
Proglib App ищет технического кофаундера. Это EdTech-платформа для разработчиков: курсы, интерактивные квизы и ИИ-тьюторы. MVP уже работает, юзеры растут, и нам нужен человек, способный взять на себя техчасть.
Это шанс выйти за пределы скриптов и стать архитектором продукта, которым пользуются тысячи коллег.
🛠️ Стек и инструменты:
TypeScript, React 18, Express 5, PostgreSQL, Drizzle ORM. Используем Claude Code и Cursor.
Твои задачи:
• Проектировать масштабируемую архитектуру и пилить фичи. • Внедрять ИИ-агентов в образовательный процесс. • Работать автономно в связке с основателем.
Ожидания:
• Уверенное владение TS, React, Node.js и SQL. • Понимание, как устроены современные веб-сервисы. • Самостоятельность: взял задачу — довёл до результата.
Удалёнка, гибкий график и полная свобода в принятии технических решений.
Готов делать сервис, который изменит обучение в IT? Пиши о себе и кидай GitHub 👇
@proglibrary_feedback_bot
❤1
📊 Pandas: от CSV до продвинутой аналитики за одну статью
Большой разбор по pandas — от чтения CSV до группировок, агрегаций и более сложной аналитики. Хороший материал, чтобы систематизировать базу.
🏆 Сделка с совестью на хакатоне: как победить с нерабочим кодом?
Живая история команды, которая выиграла хакатон, несмотря на технические проблемы. Много инсайтов про презентацию, стратегию и то, как на самом деле оцениваются проекты.
🎭 Декораторы в Python — просто о сложном
Разбор декораторов в Python — от объяснения для новичков до чуть более продвинутых кейсов.
🤔 Python уже не торт?
Размышления о том, как меняются приоритеты разработчиков и почему вокруг Python стало больше дискуссий.
💾 Работа с объёмными данными в Python для начинающих
Вводный материал про обработку больших данных в Python: базовые подходы, инструменты и ограничения.
📍 Навигация: Вакансии • Задачи • Собесы
#свежак
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6🤩1
🏭 Паттерн «Фабрика» в Python: как перестать плодить спагетти-код
Если в вашем коде то и дело встречаются бесконечные цепочки
💡 В чем суть
Вместо того чтобы вызывать конструктор класса напрямую (`EmailNotifier()`), вы обращаетесь к специальному методу-фабрике. Он сам решает, какой объект создать, основываясь на входных данных или конфигурации.
Представьте ресторан: вы не идете на кухню готовить блюдо сами (не создаете объект). Вы делаете заказ официанту (фабрике), и кухня возвращает вам готовый результат, не нагружая вас деталями рецепта.
3 способа сделать вашу фабрику лучше:
1. Словари вместо
2. Передача параметров: Хорошая фабрика умеет не только создавать объект, но и сразу прокидывать в него нужные настройки (например, заголовок документа или автора).
3. Абстрактные базовые классы (ABC): Используйте модуль
🛠 Реальный пример: Фабрика подключений к БД
Это, пожалуй, самый практичный кейс. Вы можете создать метод
Когда использовать:
🔛 Когда у вас много родственных классов с общим интерфейсом.
🔛 Когда решение о том, какой класс создать, принимается только в момент работы программы (runtime).
🔛 Когда процесс создания объекта слишком сложен и вы хотите скрыть эту логику.
🔗 Полный гайд с примерами кода:
А вы используете паттерны в своих проектах или считаете их лишней абстракцией для Python?
📍 Навигация: Вакансии • Задачи • Собесы
🐸 Библиотека питониста
#буст
Если в вашем коде то и дело встречаются бесконечные цепочки
if-elif-else для создания разных объектов, пришло время познакомиться с Factory Pattern. Это один из самых полезных порождающих паттернов, который берет на себя всю грязную работу по созданию экземпляров классов.💡 В чем суть
Вместо того чтобы вызывать конструктор класса напрямую (`EmailNotifier()`), вы обращаетесь к специальному методу-фабрике. Он сам решает, какой объект создать, основываясь на входных данных или конфигурации.
Представьте ресторан: вы не идете на кухню готовить блюдо сами (не создаете объект). Вы делаете заказ официанту (фабрике), и кухня возвращает вам готовый результат, не нагружая вас деталями рецепта.
3 способа сделать вашу фабрику лучше:
1. Словари вместо
if-elif: Чтобы код не превращался в «лесенку», используйте словарь, где ключи — это типы, а значения — сами классы.2. Передача параметров: Хорошая фабрика умеет не только создавать объект, но и сразу прокидывать в него нужные настройки (например, заголовок документа или автора).
3. Абстрактные базовые классы (ABC): Используйте модуль
abc, чтобы гарантировать, что все объекты, созданные фабрикой, имеют одинаковый набор методов (например, send() или `connect()`).🛠 Реальный пример: Фабрика подключений к БД
Это, пожалуй, самый практичный кейс. Вы можете создать метод
create_from_config(config), который сам поймет, нужно ли подключаться к MySQL, PostgreSQL или SQLite, просто прочитав файл настроек.
# Пример вызова
db = DatabaseFactory.create_from_config(production_config)
print(db.connect())
Когда использовать:
🔗 Полный гайд с примерами кода:
А вы используете паттерны в своих проектах или считаете их лишней абстракцией для Python?
📍 Навигация: Вакансии • Задачи • Собесы
#буст
Please open Telegram to view this post
VIEW IN TELEGRAM
❤7👏4👍2
🏎 Юнит-тестирование производительности: ловим регрессии по числу инструкций CPU
Бенчмарки в CI — это отлично, но они сообщают о проблеме слишком поздно. Идеально было бы получать сигнал о том, что код стал работать медленнее, прямо во время запуска локальных тестов. Но как сделать это стабильным, если время выполнения (`elapsed time`) постоянно скачет?
Автор в статье предлагает использовать количество инструкций CPU вместо времени.
Если вы изменили код, количество инструкций CPU (почти всегда) изменится:
🔛 Это не гарантирует, что код стал медленнее (влияют кэши, предсказания переходов и т.д.), но это верный признак того, что производительность могла измениться.
🔛 Это дает гораздо более стабильные цифры, чем замер времени, особенно на одной и той же машине.
Для Linux можно использовать библиотеку
Пример теста:
Чтобы добиться идеальной точности, можно:
1. Фиксировать
2. Отключать ASLR (рандомизацию адресного пространства): через команду
3. Использовать один и тот же билд Python: например, через
📍 Навигация: Вакансии • Задачи • Собесы
🐸 Библиотека питониста
#буст
Бенчмарки в CI — это отлично, но они сообщают о проблеме слишком поздно. Идеально было бы получать сигнал о том, что код стал работать медленнее, прямо во время запуска локальных тестов. Но как сделать это стабильным, если время выполнения (`elapsed time`) постоянно скачет?
Автор в статье предлагает использовать количество инструкций CPU вместо времени.
Если вы изменили код, количество инструкций CPU (почти всегда) изменится:
Для Linux можно использовать библиотеку
py-perf-event, которая дает доступ к системному вызову perf_event_open().Пример теста:
from py_perf_event import measure, Hardware
from wordcount import wordcount
def test_speed():
[instruction_count] = measure(
[Hardware.INSTRUCTIONS],
wordcount,
DATA
)
# Сравниваем с эталоном (округление помогает избежать шума)
assert round(instruction_count / 100_000) == 3127, "Скорость изменилась!"
Чтобы добиться идеальной точности, можно:
1. Фиксировать
PYTHONHASHSEED: чтобы рандом в хешировании словарей не влиял на проход по коду.2. Отключать ASLR (рандомизацию адресного пространства): через команду
setarch x86_64 -R pytest.3. Использовать один и тот же билд Python: например, через
uv python install.📍 Навигация: Вакансии • Задачи • Собесы
#буст
Please open Telegram to view this post
VIEW IN TELEGRAM
❤4👍1
🐍 `__str__` vs `__repr__`: два лица одного объекта
Вы наверняка видели это в консоли:
Это стандартный ответ Python, который абсолютно бесполезен и для пользователя, и для разработчика при отладке.
Но в Python есть два метода, которые превращают этот «мусор» в понятные данные.
🔹
Этот метод вызывается функциями
🔹
Этот метод вызывается в REPL-консоли, отладчиках и внутри коллекций (например, когда вы печатаете список объектов). Его цель — однозначность.
Идеальный
Золотое правило реализации:
1. Всегда реализуйте
2. Добавляйте
Реальный пример (Data Model):
📍 Навигация: Вакансии • Задачи • Собесы
🐸 Библиотека питониста
#буст
Вы наверняка видели это в консоли:
<__main__.Point object at 0x10f3a2c50>.Это стандартный ответ Python, который абсолютно бесполезен и для пользователя, и для разработчика при отладке.
Но в Python есть два метода, которые превращают этот «мусор» в понятные данные.
🔹
__str__() — Для людейЭтот метод вызывается функциями
print() и str(). Его цель — выдать максимально чистое, красивое и читаемое описание объекта. 🔹
__repr__() — Для разработчиковЭтот метод вызывается в REPL-консоли, отладчиках и внутри коллекций (например, когда вы печатаете список объектов). Его цель — однозначность.
Идеальный
__repr__ должен выглядеть как код, который можно скопировать и вставить, чтобы воссоздать этот же объект.Золотое правило реализации:
1. Всегда реализуйте
__repr__()**. Если вы не определили __str__, Python автоматически использует __repr__ как запасной вариант.2. Добавляйте
__str__() только тогда, когда вам нужно «причесать» вывод для конечного пользователя.Реальный пример (Data Model):
class Product:
def __init__(self, name, price):
self.name = name
self.price = price
def __repr__(self):
# Однозначно: имя класса и параметры
return f"Product(name='{self.name}', price={self.price})"
def __str__(self):
# Красиво: только для пользователя
return f"{self.name} — всего за {self.price}₽"
p = Product("Кофе", 250)
print(p) # Вывод: Кофе — всего за 250₽
print(repr(p)) # Вывод: Product(name='Кофе', price=250)
📍 Навигация: Вакансии • Задачи • Собесы
#буст
Please open Telegram to view this post
VIEW IN TELEGRAM
❤8👍5
Forwarded from Библиотека дата-сайентиста | Data Science, Machine learning, анализ данных, машинное обучение
🛠 Git Submodules: как не плодить копипасту в ML-проектах
Представьте: у вас три команды (Fraud Detection, Credit Scoring и Trading). Всем им нужна одна и та же функция
Обычно это превращается в кошмар:
1. Команды копируют код себе.
2. Одна команда находит баг и исправляет его.
3. Остальные два проекта остаются с багами, потому что даже не знают об исправлении.
Итог: «расползание» версий (version drift) и ошибки в продакшене.
✅ Решение: Git Submodules
Это способ вставить одну Git-репозиторий внутрь другого как подпапку. Вы не копируете код, а ссылаетесь на конкретный коммит в общем репозитории библиотек.
🚀 Шпаргалка по командам
1. Добавить общую библиотеку в проект:
Это создаст папку
2. Клонировать проект со всеми зависимостями:
Если вы просто сделаете
3. Обновить общие утилиты до последней версии:
📍 Навигация: Вакансии • Задачи • Собесы
🐸 Библиотека дата-сайентиста
#буст
Представьте: у вас три команды (Fraud Detection, Credit Scoring и Trading). Всем им нужна одна и та же функция
calculate_risk_score().Обычно это превращается в кошмар:
1. Команды копируют код себе.
2. Одна команда находит баг и исправляет его.
3. Остальные два проекта остаются с багами, потому что даже не знают об исправлении.
Итог: «расползание» версий (version drift) и ошибки в продакшене.
✅ Решение: Git Submodules
Это способ вставить одну Git-репозиторий внутрь другого как подпапку. Вы не копируете код, а ссылаетесь на конкретный коммит в общем репозитории библиотек.
🚀 Шпаргалка по командам
1. Добавить общую библиотеку в проект:
git submodule add https://github.com/user/ml-utils.git ml-utils
Это создаст папку
ml-utils/ и файл .gitmodules, где прописана ссылка на репозиторий.2. Клонировать проект со всеми зависимостями:
Если вы просто сделаете
git clone, папка с сабмодулем будет пустой. Нужно так:
git clone --recurse-submodules https://github.com/user/main-project.git
3. Обновить общие утилиты до последней версии:
git submodule update --remote ml-utils
git add ml-utils
git commit -m "Update shared ML utils"
📍 Навигация: Вакансии • Задачи • Собесы
#буст
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3🥰2
🛡 Вышел Python 3.10.20 (Security Release)
Если ваши проекты всё ещё крутятся на ветке 3.10, пришло время обновиться.
Вчера, 3 марта 2026 года, вышел критический патч безопасности для серии 3.10.
Разработчики закрыли сразу несколько серьезных дыр, которые могли привести к инъекциям и отказам в обслуживании (DoS):
🔛 Исправлены ошибки в
🔛 Обновлена библиотека
🔛 Модули
🔛 Исправлены критические ошибки «use-after-free» в модуле
Если вы до сих пор на 3.10 — это серьезный повод запланировать миграцию на Python 3.14 (текущий стабильный релиз). В новых версиях не только безопаснее, но и значительно быстрее.
🔗 Полный чейнджлог: https://clc.to/9505nQ
📍 Навигация: Вакансии • Задачи • Собесы
🐸 Библиотека питониста
#буст
Если ваши проекты всё ещё крутятся на ветке 3.10, пришло время обновиться.
Вчера, 3 марта 2026 года, вышел критический патч безопасности для серии 3.10.
Разработчики закрыли сразу несколько серьезных дыр, которые могли привести к инъекциям и отказам в обслуживании (DoS):
email.generator, которые позволяли подделывать заголовки писем.libexpat до версии 2.7.4. Это защита от вредоносных XML-файлов, которые могли переполнить память сервера.http.cookies и wsgiref теперь жестко блокируют управляющие символы, предотвращая манипуляции с заголовками.ssl и при сравнении списков, которые могли привести к падению интерпретатора или выполнению произвольного кода.Если вы до сих пор на 3.10 — это серьезный повод запланировать миграцию на Python 3.14 (текущий стабильный релиз). В новых версиях не только безопаснее, но и значительно быстрее.
🔗 Полный чейнджлог: https://clc.to/9505nQ
📍 Навигация: Вакансии • Задачи • Собесы
#буст
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10❤3