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

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

@pyproglib

Все самое полезное для питониста в одном канале.

Учиться у нас: clc.to/6e5Csg

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

По рекламе: @tproger_sales_bot
РКН: https://gosuslugi.ru/snet/67b885cbd501cf3b2cdb5b36
Subscribers
37.3K
Photos
3.3K
Videos
105
Links
5.1K

Showing posts older than #7582 · Back to latest

Older Posts 20 shown
Post #7581 3.52K
🧱 Clojure vs Python & R: новый взгляд на манипуляцию данными

Если вы привыкли к Pandas или dplyr, переход на Clojure с библиотекой tablecloth может показаться прыжком в другую вселенную. Но именно здесь раскрывается истинная мощь функционального программирования.

⚖️ Главное отличие: иммутабельность

В Pandas выполнение df.rename() или добавление колонки часто мутирует (изменяет) исходный объект. В Clojure любой датасет неизменяем.

— Каждая операция возвращает новый объект.
— Вам больше не нужно держать в голове текущее состояние переменной — код становится предсказуемым и легким для тестирования.

Clojure использует «потоковый макрос» -> (threading macro), который работает как пайп |> в R или цепочки методов в Python.

Задача: Отфильтровать пингвинов тяжелее 3800г и оставить только длину клюва.

Pandas: ds[ds["mass"] > 3800]["bill_length"]

tablecloth:

(-> ds
(tc/select-rows #(> (% "mass" 0) 3800))
(tc/select-columns "bill_length"))


Clojure — строго типизированный язык в плане операций. В отличие от R, он не будет молча сравнивать nil с числом.
Попытка сравнить (> nil 3800) вызовет ошибку.

Решение: Нужно явно указывать значение по умолчанию, например (% "col" 0). Это заставляет аналитика осознанно обрабатывать пропуски, а не полагаться на «магию» библиотеки.

🧬 Функции как «граждане первого класса»

В Clojure функции — это всё. Вы можете передать набор (set) как фильтр для колонок:

#{"year" "sex"} — это функция, которая проверяет наличие элемента.
(tc/select-columns ds (complement #{"year"})) — выберет всё, КРОМЕ колонки year. Чистая математическая логика в коде.


📈 Группировка (Group-by)

В tablecloth группировка возвращает не абстрактный объект, а новый датасет, где одна из колонок сама содержит вложенные датасеты. Это позволяет применять к группам любые сложные трансформации как к обычным таблицам.

🔗 Ссылка на блог

📍 Навигация: Вакансии • Задачи • Собесы

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

#буст
  • 👍 4
  • 🤩 1
Post #7580 3.34K
😱 Если ваш продукт не умеет отдавать данные в формате, понятном AI-агенту, то вас просто не существует

Скрипт не будет кликать по красивым кнопкам в браузере, он уйдёт к конкуренту с нормальным API. Перестроить архитектуру под машинных клиентов — это уже не хайп, а необходимое условие сохранения конкурентоспособности.

Как адаптировать продукт и не исчезнуть из выдачи:

— интегрировать MCP и A2A-взаимодействие, чтобы агенты могли вас читать;
— научиться контролировать стоимость (лимиты, кэш, роутинг между моделями);
— настроить AgentOps: трейсинг, логирование и отлов регрессий.

Всё это ждёт вас на обновлённом курсе «Разработка AI-агентов». Мы специально сделали фокус на утилитарном инжиниринге и production-ready решениях.

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

Зафиксировать цену и начать деплоить агентов без слива бюджета 👈
  • ❤ 1
Post #7578 3.49K
📂 stdout и stderr: Два потока одного экрана

В операционных системах (Linux, macOS, Windows) каждому запущенному процессу по умолчанию открываются два выходных потока:
1. Standard Output (stdout): Сюда идет основной результат работы программы.
2. Standard Error (stderr): Сюда идут ошибки, предупреждения и диагностические сообщения.

В модуле sys эти потоки представлены как файлоподобные объекты. Функция print — это просто удобная обертка над ними.

🔛 Обычный вывод: print("Hello") или sys.stdout.write("Hello\n")
🔛 Вывод ошибки: print("Error!", file=sys.stderr) или sys.stderr.write("Error!\n")

🛠 Зачем разделять потоки

Главная причина — перенаправление (redirection). Представьте, что ваш скрипт обрабатывает 1000 файлов и записывает результат в лог. Если произойдет ошибка на 500-м файле, и вы пишете всё в один поток, ошибка «потеряется» внутри огромного текстового файла.

Примеры команд в терминале:
🔛 python script.py > output.txt — в файл попадет только stdout. Ошибки (stderr) по-прежнему будут видны на экране.
🔛 python script.py 2> errors.txt — на экране будет результат, а все ошибки уйдут в отдельный файл.
🔛 python script.py > all.txt 2>&1 — классический способ «склеить» потоки и записать всё в один файл.

💡 Когда стоит использовать stderr

Трей правильно замечает: stderr — это не только для критических ошибок. Используйте его для:
1. Tracebacks: Python сам пишет сюда дампы ошибок при падении.
2. Warnings: Модуль warnings использует этот поток.
3. Progress Bars: Если вы рисуете индикатор загрузки (например, через `tqdm`), лучше выводить его в stderr, чтобы он не засорял основной вывод данных.
4. Interactive Prompts: Вспомогательный текст (вроде приветствия в REPL) часто идет в stderr.

🏁 Практический совет

Если вы пишете CLI-утилиту, которой будут пользоваться другие люди (или ваши же скрипты):
> Всегда отправляйте полезные данные (те, что можно передать по цепочке другому скрипту через `|`) в stdout, а любые пояснения, логи и ошибки — в stderr.


📍 Навигация: Вакансии • Задачи • Собесы

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

#буст
  • 👍 3
  • 🤩 1
Post #7577 3.63K
🚀 Python 3.15: JIT-компилятор официально «встал на рельсы»

Хорошие новости для всей экосистемы: волонтерская команда CPython совершила прорыв. Новый JIT-компилятор (Just-In-Time), который буксовал в версиях 3.13 и 3.14, в альфа-версии Python 3.15 наконец-то начал показывать реальный прирост скорости.

Цели по производительности достигнуты с опережением графика:
➕ +11–12% ускорения на macOS (AArch64).
➕ +5–6% ускорения на Linux (x86_64).
➕ В отдельных сценариях зафиксирован рост производительности более чем на 100%.

Core Developer выделил три ключевых архитектурных решения:

1. Вместо компиляции отдельных методов, JIT теперь «подсматривает» за реально исполняемыми путями кода. Благодаря системе Dual Dispatch, основной интерпретатор остается быстрым, а JIT включается только там, где это эффективно. Это увеличило покрытие кода оптимизациями на 50%.

2. В Python управление памятью (`refcounts`) очень ресурсозатратно. Раньше каждая такая операция в JIT сопровождалась проверкой (ветвлением). Команда убрала эти лишние проверки в машинном коде, что дало колоссальный накопительный эффект.

3. После потери спонсорского финансирования проект перешел в руки сообщества. Сложные части JIT разбили на мелкие блоки, что позволило обычным C-разработчикам вносить вклад без глубоких знаний в теории компиляторов.

🔗 Ссылка на новость

📍 Навигация: Вакансии • Задачи • Собесы

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

#буст
  • 👍 16
  • ❤ 5
  • ⚡ 3
Post #7576 3.87K
🔥 AI Engineering Toolkit: 100+ инструментов для тех, кто строит на LLM

Прошли те времена, когда для создания ИИ-сервиса достаточно было одного API-ключа OpenAI.

Сегодня «AI Engineer» — это наполовину разработчик, наполовину архитектор данных и на 100% мастер автоматизации.

🔗 Ссылка на Github

📍 Навигация: Вакансии • Задачи • Собесы

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

#буст
  • 👍 5
  • ❤ 4
Post #7573 3.69K

Forwarded from Библиотека дата-сайентиста | Data Science, Machine learning, анализ данных, машинное обучение

🔥 TorchCode — LeetCode для PyTorch

TorchCode — интерактивная среда (в Jupyter), где ты решаешь задачи по PyTorch, как на алгоритмических платформах.

40+ задач — от базовых до продвинутых

🔗 Ссылка на платформу

Библиотека дата-сайентиста

#буст
  • 👍 4
  • ❤ 2
  • 🤩 1
Post #7572 4.09K
⚡️ 100 дней IoT: для питонистов

Этот репозиторий — пошаговый план трансформации из «программиста интерфейсов» в инженера встроенных систем.

Автор использует MicroPython, ESP32 и Raspberry Pi Pico, что делает порог входа минимальным для любого питониста.

🔗 Ссылка на Github

📍 Навигация: Вакансии • Задачи • Собесы

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

#буст
  • ❤ 6
  • 👍 1
Post #7571 3.98K
📚Напоминаем про наш полный курс «Самоучитель по 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
  • 🔥 1
Post #7570 3.39K
✂️ 3+ способа убрать лишние пробелы в Python

Представьте, что у вас есть строка:
"Это очень странное предложение."
Наша цель: оставить строго по одному пробелу между словами.

1. Золотой стандарт: Регулярные выражения (`re`)

Самый читаемый и производительный метод. Мы ищем паттерн «два и более пробела» и меняем его на один:

import re

def clean_spaces(text):
return re.sub(r" {2,}", " ", text)


Плюс: Сохраняет пробелы в начале и в конце строки (leading/trailing whitespace), если они там были.

2. Метод «Split + Filter» (Быстрый, но с нюансом)

Популярный хак через разбиение строки:

def clean_spaces(text):
return " ".join(filter(None, text.split(" ")))


Нюанс: Этот метод удалит все пробелы в начале и конце строки. Если вам нужно «причесать» текст для БД, это даже полезно. Но если важна исходная структура — используйте re.

3. Путь джедая: Поиск неподвижной точки (Fixed Point)

В Python 3.14 появился functools.Placeholder. Это позволяет нам крутить цикл замены replace(" ", " "), пока строка не перестанет меняться:

from functools import partial, Placeholder as _P

def fixedpoint(f, x):
while x != (x := f(x)):
pass
return x

# Заменяем два пробела на один, пока они не кончатся
space_replacer = partial(str.replace, _P, " ", " ")
clean_text = fixedpoint(space_replacer, "Много пробелов")


Это скорее математический трюк, который показывает мощь функционального программирования в Python.

📍 Навигация: Вакансии • Задачи • Собесы

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

#буст
  • ❤ 3
  • 👍 2
  • 🔥 1
Post #7569 3.36K
Почитали тут свежий отчёт по рынку ИИ-ускорителей в РФ: оказывается, 54% компаний тормозят внедрение ИИ исключительно из-за конских цен на инфраструктуру.

Ну, то есть написать пет-проект с вызовом API это задача на вечер, а вот запустить агента в продакшн так, чтобы он не сжёг бюджет отдела за неделю — суровая инженерия.

По сути, сейчас мало уметь собирать RAG. Нужно считать токены, настраивать time-travel дебаг в LangGraph и уметь роутить запросы на лету. Всё это мы учли в обновлённом курсе по разработке AI-агентов, где акцент сделан именно на AgentOps и жёсткий контроль ресурсов.

Также в программе:

— оценка качества, трейсинг и защита от деградации пайплайнов;
— мультиагентные паттерны и интеграция по протоколу MCP;
— локальный деплой Open Source под 152-ФЗ (когда данные нельзя выносить наружу).

Кажется, это единственный адекватный roadmap по переходу от блокнотов к enterprise-решениям.

Прямо сейчас можно урвать курс с увесистой скидкой (49 000 ₽ 62 990 ₽ за базовый тариф и 99 000 ₽ 124 990 ₽ за продвинутый трек), но стоит поторопиться — на потоке осталось всего 5 мест.

👉 Зафиксировать цену и начать собирать агентов, за которых не стыдно в проде
Post #7567 3.21K
🏛 Когда пора создавать класс в Python

1. Требование фреймворка
Самый частый случай: вы используете библиотеку (Django, SQLAlchemy, Pydantic), где класс — это интерфейс. Например, в Django класс Model — это способ описать таблицу в базе данных. Здесь у вас просто нет выбора.

2. Вы постоянно передаете одни и те же данные в функции
Если у вас есть 5 функций, и каждая из них первым аргументом принимает один и тот же объект (например, server_connection или `user_session`), — это явный сигнал.

Вместо того чтобы «таскать» объект за собой, сделайте его атрибутом класса (`self.connection`), а функции превратите в методы. Код станет чище, а вызовы — короче: connection.send() вместо send_data(connection, data).

3. Улучшение читаемости и структуры данных
Иногда класс нужен просто для того, чтобы дать данным имя.
Плохо: Функция возвращает кортеж (103, 29). Что это? Ширина и высота? Или координаты X и Y?
Хорошо: Функция возвращает объект TerminalSize(columns=103, lines=29). Теперь любой, кто читает ваш код, сразу понимает, что происходит.

👉 Полная статья с полезностями

📍 Навигация: Вакансии • Задачи • Собесы

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

#буст
  • 👍 6
  • ❤ 1
Post #7566 3.44K
⚙️ Конфигурация в Python

Многие начинают с Option 1, потому что это быстро. Но по мере роста проекта поиск того, «откуда взялся этот API_KEY», превращается в детектив.

Почему Option 2 (Централизация) — это стандарт

Fail-Fast:
Ваше приложение упадет при запуске, если забыт важный токен, а не через два часа работы, когда дело дойдет до вызова глубоко запрятанной функции.

Типизация: os.environ всегда возвращает строки. Если вам нужен RETRY_COUNT как int или DEBUG как bool, централизованный конфиг сделает приведение типов за вас.

Единый источник истины: Все настройки проекта видны в одном файле.

В 2026 году лучшим способом реализации Option 2 является библиотека pydantic-settings.

Она делает валидацию конфигурации автоматической:
from pydantic_settings import BaseSettings, SettingsConfigDict

class Settings(BaseSettings):
db_url: str
api_key: str
debug: bool = False # Значение по умолчанию

# Автоматически читает из .env файла
model_config = SettingsConfigDict(env_file=".env")

settings = Settings()


🏁 Итог

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

А какой подход используете вы?

📍 Навигация: Вакансии • Задачи • Собесы

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

#буст
  • ❤ 8
  • 👍 2
  • 😢 1
  • 🌚 1
Post #7565 3.84K
awesomePrep: полноценный тренажер к интервью по Python (424 вопроса)

awesomePrep — это бесплатный open-source проект, который превращает подготовку к техническому собесу в структурированный процесс.

🔗 Ссылка на платформу

📍 Навигация: Вакансии • Задачи • Собесы

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

#буст
  • ❤ 7
  • 👍 2
Post #7564 3.62K
🛡 Срочное обновление безопасности: Python 3.12.13, 3.11.15 и 3.10.20

Если ваш проект работает на одной из этих версий Python, пришло время обновиться. Команда core-разработчиков выпустила экстренные патчи, закрывающие серьезные уязвимости.

Так как эти ветки находятся в режиме security-fix-only, обновления доступны только в виде исходного кода.

🔐 Что исправили? (Основные моменты)

1. Инъекции в Email и HTTP-заголовки
Исправлены критические ошибки в email.generator и http.cookies. Теперь система жестко блокирует попытки вставить управляющие символы или некорректно «склеить» заголовки. Это защищает от атак типа *Header Injection*.

2. Защита от DoS-атак (Отказ в обслуживании)
Разработчики устранили несколько «узких мест» с квадратичной сложностью вычислений (уязвимости типа *ReDoS* и переполнение памяти):
— В парсинге параметров HTTP и XML.
— В обработке путей через os.path.expandvars().
— В модулях plistlib, http.client и http.server.

3. Безопасность XML и HTML
Обновлена библиотека libexpat до версии 2.7.4. Это закрывает свежие CVE 2026-го года, связанные с переполнением памяти при обработке вредоносных XML-файлов. Также усилен html.parser для работы с агрессивной разметкой.

4. Память и SSL
Исправлена опасная ошибка *use-after-free* (использование памяти после освобождения) в модуле ssl, которая могла возникать при сбое инициализации соединения.

🔗 Ссылка на новость

📍 Навигация: Вакансии • Задачи • Собесы

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

#буст
  • ❤ 5
  • 👍 4
Post #7563 3.82K
➡️ Чит-лист по Claude Code (Workflow 2026)

Claude Code — это не просто CLI, а полноценная среда для автономного кодинга. Чтобы он не «галлюцинировал», нужно правильно выстроить иерархию памяти:

CLAUDE.md — файл в корне проекта, который содержит техстек, архитектуру и правила (Style Guide). Claude читает его первым.

Skills (Навыки) — создавайте .md файлы в папке .claude/skills/. Описывайте там паттерны тестирования или правила деплоя — Claude вызовет их автоматически через NLP.

Иерархия памяти: используйте глобальный CLAUDE.md для общих правил и локальные файлы в подпапках для специфического контекста (например, только для фронтенда).

Команды-выручалочки:

/init — просканировать проект и создать базу знаний.

/compact — сжать контекст, когда беседа стала слишком длинной (экономит токены!).

Esc Esc — быстрый возврат в меню.

📍 Навигация: Вакансии • Задачи • Собесы

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

#буст
  • 👍 6
  • ❤ 2
Post #7561 3.27K
Кажется, мы окончательно перешли от игрушек к суровому AgentOps

Приглашаем на наш обновлённый курс по разработке ИИ-агентов. Никакой воды про «будущее нейросетей», только инженерный подход.

На курсе мы:

— пошагово строим готовые системы на LangGraph, CrewAI и MCP;
— настраиваем кэширование и роутинг, чтобы бот не сожрал токены;
— разбираемся со стейтом, учимся дебажить через time-travel и прикручиваем human-in-the-loop;
— выводим RAG в прод так, чтобы безопасники не завернули архитектуру из-за 152-ФЗ.

В пекло скучные лекции про общую инфраструктуру — сразу фокусируемся на агентных фреймворках и написании кода. Занятия ведут бывалые лиды из Газпромбанка и Альфы, набившие шишки на реальных задачах.

Кстати, на днях мы пилили агента в прямом эфире, если пропустили — есть запись вебинара.


Сегодня последний день, когда можно забрать курс по старым ценам. Базовый тариф сейчас стоит 49 000 ₽ (вместо 62 990 ₽), продвинутый трек — 99 000 ₽ (вместо 124 990 ₽). Если не хочется отдавать всю сумму сразу, есть рассрочка. Торопитесь — на потоке осталось всего 5 мест!

→ Зафиксировать цену и перейти к сборке своих агентов
  • ❤ 1
Post #7560 3.25K
У «Библиотеки программиста» появился резервный канал в мессенджере MAX

Он нужен исключительно для связи с теми, кто не может следить за обновлениями здесь из-за трудностей с доступом. Поэтому, если вы видите это сообщение, распространите его среди жильцов вашего ЖЭКа.

Контент в MAX будет дублировать телеграмный — основной нашей площадкой был и остаётся Telegram. Надеемся, это временная мера.

→ Подписаться на «Библиотеку программиста» в MAX
  • 😁 16
  • 😢 5
  • 🌚 4
  • 👍 3
  • 🥱 3
  • 🤔 1
Older posts →
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →