Telegram Web
🐒 Monkey patching в Python: спасение или анти-паттерн

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

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

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

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

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

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

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


Библиотека питониста #междусобойчик
Please open Telegram to view this post
VIEW IN TELEGRAM
😁2010🔥10👍2
📱 Свежие релизы Python‑пакетов за последние 7 дней

Вот что появилось или обновилось за последние 7 дней в экосистеме Python:

📍 Релизы
Django Bugfix Release 5.2.4 — исправлены баги


📦 Data, ML, AI, Agents
sentence-transformers 5.0.0 — эмбеддинги, поиск и переранжирование
PEFT 0.16.0 — эффективный файнтюнинг больших моделей
wandb 0.21.0 — мониторинг экспериментов (Weights & Biases)
CrewAI 0.140.0 — фреймворк для координации AI-агентов
statsig-python-core 0.6.0 — SDK для A/B-тестов и экспериментов
PaddlePaddle 3.1.0 — глубокое обучение с поддержкой распределённого обучения

🧩 Инфраструктура, парсинг, работа с файлами
python-calamine 0.4.0 — Python-обёртка над Rust-библиотекой для чтения Excel/ODF
pylance 0.31.0 — поддержка формата Lance в Python
pillow-heif 1.0.0 — поддержка HEIF/HEIC изображений
PyAV 15.0.0 — Python-интерфейс к библиотекам FFmpeg

🧪 Автоматизация, тестирование, Web, BLE
SeleniumBase 4.40.0 — фреймворк для автотестов с поддержкой всех браузеров
browser-use 0.4 — интерфейс сайтов для AI-агентов
bleak 1.0.0 — BLE-клиент на Python, кроссплатформенный

🛠 Разработка серверов и аналитики
fastmcp 2.10.0 — быстрый Python-способ построить MCP-сервер
PostHog 6.0.0 — аналитика событий прямо из Python-приложений

Библиотека питониста #свежак
Please open Telegram to view this post
VIEW IN TELEGRAM
6👍6🔥3
📎 Топ-вакансий для питонистов за неделю

Python Разработчик — от 250 000 до 280 000₽, удалёнка

SDET Python (KLDFS), удалёнка

Python-разработчик — до 1 800 $, удалёнка

Python разработчик — от 1500 до 3000 $, удалёнка

Senior Python Developer (Analytics) — от 300 000 до 400 000 ₽, удалёнка

➡️ Еще больше топовых вакансий — в нашем канале Python jobs

Библиотека питониста
Please open Telegram to view this post
VIEW IN TELEGRAM
2👍1😁1
Шпаргалка: типизированные структуры данных в Python

Python поддерживает типизацию с помощью аннотаций, а также предоставляет удобные инструменты для описания структур — TypedDict и dataclasses.

🆖 Typed Dictionaries (Типизированные словари)

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

Пример:
from typing import TypedDict

class Metrics(TypedDict):
accuracy: float
precision: float
recall: float
AUC: float | None # необязательное поле

def evaluate_predictions(y_true: np.ndarray, y_pred: np.ndarray) -> Metrics:
# Возвращаем словарь с метриками
return Metrics(accuracy=0.66, precision=1.0, recall=0.5)

my_metrics = evaluate_predictions(y_true, y_pred)
print(my_metrics) # {'accuracy': 0.66, 'precision': 1.0, 'recall': 0.5}


🆖 Dataclasses (Датаклассы)

Датаклассы упрощают создание классов с данными, автоматически генерируя методы вроде __init__. Можно сделать объекты неизменяемыми с frozen=True.

Пример:
from dataclasses import dataclass

@dataclass(frozen=True)
class ModelConfig:
model_path: str
data_path: str
batch_size: int = 32
learning_rate: float = 1e-3
num_epochs: int = 10
early_stopping: bool = False

config = ModelConfig(model_path="models/v1", data_path="data/train", batch_size=64)
print(config.batch_size) # 64


🆖 Вложенные структуры

Типизированные словари и датаклассы можно вкладывать друг в друга, чтобы описать сложные структуры данных.

Пример:
from datetime import datetime

@dataclass
class ExperimentSummary:
datetime: datetime
model_config: ModelConfig
metrics: Metrics

experiment = ExperimentSummary(datetime=datetime.now(), model_config=config, metrics=my_metrics)
print(experiment.model_config.batch_size) # 64


Важные советы:
🔛 Не увлекайтесь глубокой вложенностью! Слишком сложные структуры затрудняют поддержку и понимание.
🔛 Используйте типы для самодокументирования кода. Они помогают избежать ошибок и ускоряют разработку.
🔛 Выбирайте TypedDict, если хотите словарь с проверкой структуры.
🔛 Используйте dataclasses, когда нужна полноценная структура с методами и возможностью наследования.

Библиотека питониста #буст
Please open Telegram to view this post
VIEW IN TELEGRAM
9👍7👏1👾1
🎯 Шпаргалка: 9 способов продвинуть резюме в ТОП на HeadHunter

💼 Обновили резюме, но тишина? Просмотров — ноль, откликов — тем более.

Значит, пора не просто искать работу, а правильно продавать себя системе.

В статье:
— Как работает алгоритм HeadHunter
— Почему ваше резюме могут просто не увидеть
— 9 приёмов, чтобы попасть в ТОП — от ключевых слов до тайминга

🔗 Читайте статью — и пусть рекрутеры вас заметят: https://proglib.io/sh/rStRsQJzH1

Библиотека питониста #буст
4👍1🌚1
🗂 Как перевести Python/Django-проект на uv

Если вы устали от несовпадений между локальными зависимостями, CI и продом, попробуйте перейти на uv — современный инструмент для управления окружением и зависимостями Python.

Вот краткий план, как это сделать:

1️⃣ Настройка pyproject.toml

Создайте или обновите pyproject.toml с базовой информацией о проекте:
[project]
name = "my-product"
version = "1.2.3"
description = "Our amazing product."
readme = "README.md"
requires-python = "~=3.12"
dependencies = []


2️⃣ Перенос зависимостей

Вместо requirements/*.txt теперь всё управляется через uv:
uv add -r requirements/base.txt
uv add -r requirements/dev.txt --group dev
uv add -r requirements/deploy.txt --group deploy

git rm requirements/*.txt


3️⃣ Установка и фиксация Python

uv python install 3.12
uv python pin 3.12
uv sync


> uv создаст .venv/ и .python-version и синхронизирует зависимости.

По умолчанию uv sync устанавливает только dev-зависимости. Для других групп:
uv sync --locked --group deploy


А в продакшене не забудьте флаг --no-dev!

4️⃣ Обновление .envrc (если вы используете direnv)

sed -e '/layout python/ s/^#*/#/' -i .envrc
echo 'export PATH="$(pwd)/.venv/bin:${PATH}"' >> .envrc
direnv allow


5️⃣ Docker

Базовый образ:
FROM ghcr.io/astral-sh/uv:python3.12-bookworm


Настройка переменных:
ENV UV_COMPILE_BYTECODE=1
ENV UV_LINK_MODE=copy
ENV VIRTUAL_ENV=/venv
ENV PATH="$VIRTUAL_ENV/bin:$PATH"


Установка зависимостей:
RUN --mount=type=cache,target=/root/.cache/uv \
--mount=type=bind,source=uv.lock,target=uv.lock \
--mount=type=bind,source=pyproject.toml,target=pyproject.toml \
set -ex \
&& uv venv $VIRTUAL_ENV \
&& uv sync --active --locked --no-install-project --no-dev --group deploy


6️⃣ Подключаем pre-commit

В .pre-commit-config.yaml:
- repo: https://github.com/astral-sh/uv-pre-commit
rev: 0.7.12
hooks:
- id: uv-lock


7️⃣ GitHub Actions

- uses: astral-sh/setup-uv@v1
with:
python-version: 3.12
enable-cache: true
cache-dependency-glob: "uv.lock"

- run: uv sync --locked
- run: uv run pre-commit run --all-files
- run: uv run pytest


Обновление зависимостей

Обновить конкретный пакет:
  uv lock --upgrade-package <package-name>
uv sync --locked


Обновить всё:
  uv lock --upgrade
uv sync --locked


Библиотека питониста #буст
Please open Telegram to view this post
VIEW IN TELEGRAM
👍164🔥3😁1
💡 Python-разработчик и хочешь выйти за пределы типовых задач?

Переход в LLM-инжиниринг — мощный горизонтальный шаг с реальным спросом, влиянием и перспективами роста.

Компании ищут специалистов, которые работают с реальными пайплайнами и продакшен-инфраструктурой. Хочешь стать одним из них? Приходи за практикой и знаниями на курс «Инженер LLM» от тех, кто уже строит это сегодня.

Преподаватели — топы индустрии:
— Кристина Желтова, директор по разработке моделей в Газпромбанке
— Александр Потехин, NLP Lead в X5 Tech
— Евгений Кокуйкин, CEO Raft, эксперт по LLM-инфраструктуре

Это не лекции «про будущее», а опыт тех, кто уже создает LLM-системы для банков, ритейла и платформ с миллионами пользователей.

Курс разработан GIGASCHOOL совместно с крупнейшей магистратурой по ИИ AI Talent Hub.


Ты научишься:
➡️дообучать модели (fine-tuning, PEFT, RLHF);
➡️работать с LangChain, LangGraph и векторными базами;
➡️строить RAG‑системы, внедрять инфопоиск и защищать LLM;
➡️собирать пайплайны, деплоить, трекать, вести версионирование;
➡️проектировать мультиагентные решения и ассистентов.

▪️ 252 часа теории и практики
▪️ диплом о профессиональной переподготовке
▪️ старт 14 июля, 18 недель онлайн с продуманными каникулами
▪️ 29 667 ₽/мес в рассрочку
▪️ повышение цены — 11 июля


Смотри программу и оставляй заявку 🔗

Обучение у тех, кто уже запускает LLM в продакшене — лучший вклад в твою AI-карьеру 😎


Реклама. АНО "ЦЕНТР РАЗВИТИЯ ИТ-КОМПЕТЕНЦИЙ «ГИГА ШКОЛА»", ИНН 7453352684. Erid 2VtzqwqX9Z1
Please open Telegram to view this post
VIEW IN TELEGRAM
2👍1
Уже успех, если он существует 🤣

Библиотека питониста #развлекалово
💯20😁5❤‍🔥1👍1
📱 Промпт для анализа безопасности и устойчивости Python-кода

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

Промпт:
Проверь мой Python-код на предмет безопасности и устойчивости.
Дай рекомендации по:
• Обработке исключений и предотвращению сбоев
• Валидации и санитации входных данных
• Безопасному хранению и работе с конфиденциальной информацией
• Защите от распространённых уязвимостей (инъекции, XSS, CSRF и др.)
• Использованию инструментов для статического анализа безопасности (bandit, safety)
• Логированию ошибок и предупреждений


📌 Что получите:
• План по улучшению безопасности кода
• Методы повышения устойчивости и отказоустойчивости
• Инструменты для автоматического обнаружения уязвимостей

Библиотека питониста #буст
Please open Telegram to view this post
VIEW IN TELEGRAM
👍102👏1😁1
Первый вебинар нашего курса по AI-агентам уже прошёл!

Запись уже выложили на обучающей платформе — можно влетать и догонять с комфортом.

Первые слушатели уже оставили фидбэки — и, кажется, мы попали в точку:
— «теперь наконец понял, как выбирать модели под задачу — раньше брал первую попавшуюся»
— «без лишнего, по делу, в лайве — кайф»
— «огонь, ожидания 100% оправданы лично у меня»

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

Ещё можно догнать и пройти всё вместе с потоком.

👉 Залетай на курс
3👍2
🔥 Python 3.14 официально поддерживает многопоточность без GIL

Большой шаг для Python-разработчиков:
С релизом Python 3.14, свободнопоточная сборка CPython (free-threaded build) официально поддерживается и больше не является экспериментальной.

📌 Это означает:
— Реальная многопоточность без GIL.
— Free-threaded Python — поддерживаемая, но пока опциональная сборка.
— Это фаза II. Переход к GIL-free по умолчанию — дело будущего.

👉 PEP 779: Free-threaded CPython

📌 Пример: сравнение GIL vs Free-threaded

Запуск CPU-bound задачи в двух потоках:
from concurrent.futures import ThreadPoolExecutor
import time

def cpu_bound_task():
start = time.time()
sum(1 for _ in range(10**7))
end = time.time()
print(f"Finished in {end - start:.2f} seconds")

with ThreadPoolExecutor() as e:
e.submit(cpu_bound_task)
e.submit(cpu_bound_task)


Результат:
$ uv run -p 3.14 a.py 
Finished in 1.01 seconds
Finished in 1.02 seconds

$ uv run -p 3.14.0b3+freethreaded a.py
Finished in 0.49 seconds
Finished in 0.51 seconds


> Потоки реально работают параллельно — ускорение почти в 2 раза!

📌 Но не всё так просто

Попытка работать с общими объектами (например, добавлять в список) может замедлить код:
# Вставка элемента в общий список
shared = []
def task():
for i in range(10**5):
shared.append(i)


Результат:
$ uv run -p 3.14 a.py 
Finished in 0.10 seconds
Finished in 0.11 seconds
172214
$ uv run -p 3.14.0b3+freethreaded a.py
Finished in 0.48 seconds
Finished in 0.49 seconds
1865


> Без GIL нужна синхронизация, иначе возможны конфликты и деградация производительности.

📌 Выводы

— Python наконец-то движется к реальной многопоточности.
— Free-threaded CPython уже работает — и может ускорить CPU-bound задачи.
— Не забывайте: работа с общими объектами требует явной синхронизации (даже с GIL). Потокобезопасность — ваша ответственность.

Библиотека питониста #свежак
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥185👍21👾1
📦 Устанавливаем Python 3.14 beta: быстрый гайд

Многие хотят попробовать Python 3.14 с новым free-threaded режимом, но не знают, как установить beta-версию.

Один из частых вопросов от подписчиков:
Хочу попробовать Python 3.14 с новым free-threaded режимом. Как его установить, если он ещё в бете?


Хороший вопрос! Несмотря на то, что Python 3.14 пока в стадии бета, вы уже можете установить его для тестирования.

👇 Вот как это сделать:

➡️ Если вы на Ubuntu

# Добавляем PPA
sudo add-apt-repository ppa:deadsnakes/ppa
sudo apt update

# Устанавливаем Python 3.14
sudo apt install python3.14


➡️ Если вы на Windows

Скачайте установщик с официального сайта и просто установите .exe — он будет существовать параллельно с текущей версией.

➡️ Если у вас другая система

Скачайте исходный код с python.org и соберите вручную. Некоторые пакетные менеджеры также уже предлагают сборки бета-версий.

⚠️ Важно: это бета, не используйте её в продакшене. Только для экспериментов, например, чтобы протестировать free-threading или другие новинки.

Библиотека питониста #междусобойчик
Please open Telegram to view this post
VIEW IN TELEGRAM
👍72🔥1
Media is too big
VIEW IN TELEGRAM
Как относитесь к созданию своего жпт не через конструктор, а хардкорно через код?

🔥 — я своего завайбкодил

🏃‍♀️ Ссылка на курс
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
🧰 Фишка инструмента: сериализация dataclass в JSON (и обратно)

Если вы используете dataclasses в Python и часто работаете с JSON, попробуйте библиотеку dataclasses-json. Она позволяет автоматически сериализовать и десериализовать dataclass-объекты без ручного парсинга.

Установка:
pip install dataclasses-json


Пример использования:
from dataclasses import dataclass
from dataclasses_json import dataclass_json

@dataclass_json
@dataclass
class Person:
name: str

person = Person(name="lidatong")
person.to_json() # '{"name": "lidatong"}'
Person.from_json('{"name": "lidatong"}') # Person(name="lidatong")


Поддерживает:
— Вложенные dataclass'ы
— UUID, Decimal, datetime
— camelCase поля (LetterCase.CAMEL)
— Валидацию через .schema() (если важно типобезопасное создание)
— Python 3.6+ (через backport dataclasses)

Полезно, если вы:
– работаете с API
– сериализуете/десериализуете конфиги
– пишете пайплайны, где важно сохранение структуры

Библиотека питониста #буст
👍73🔥1
🎭 Design Patterns в Python: что стоит забыть

Поищите «design patterns in Python» — и вы утонете в туториалах по классическим паттернам из «Gang of Four».

Там будет всё: диаграммы классов, фабрики внутри фабрик, километры шаблонного кода. Вы будто пишете «серьёзное» ПО. Профессиональное. Enterprise-ready.

▶️ Но есть одна проблема: большинство этих паттернов решают проблемы, которых в Python просто нет. Они придуманы для C++ и Java.

Слепое копирование этих паттернов в Python делает код:
— сложнее,
— запутаннее,
— и больнее для того, кто будет его читать.

В статье:
Какие паттерны из GoF плохо переносятся в Python
Почему они имели смысл в 2001-м, но не сегодня
И как решить те же задачи по-питонически — проще, чище, лучше

📖 Читайте полную статью здесь: https://clc.to/sw706A

Библиотека питониста #буст
Please open Telegram to view this post
VIEW IN TELEGRAM
👍83😁1
Самые догадливые, пишите ответ в комментах 👇

Небольшая подсказка — это термин относится к Python.

Прячем ответы под спойлер, чтобы не спалить остальным.

Библиотека питониста #междусобойчик
3👍1
📚Напоминаем про наш полный курс «Самоучитель по 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👍3
2025/07/13 08:17:29
Back to Top
HTML Embed Code: