Библиотека питониста | Python, Django, Flask
40.5K subscribers
2.78K photos
75 videos
51 files
4.36K links
Все самое полезное для питониста в одном канале.

Список наших каналов: https://t.iss.one/proglibrary/9197

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

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

По рекламе: @proglib_adv
РКН: https://gosuslugi.ru/snet/67b885cbd501cf3b2cdb5b36
Download Telegram
🐍 Холивар: подозрительные проекты и supply chain-атаки в Python

На первый взгляд — крутой проект на GitHub, обещающий ускорение Python в десятки раз. По факту — странный бинарник без исходников, нереалистичные бенчмарки и токсичный автор, удаляющий комментарии.

🚩 Что должно вызывать тревогу

🟠 DLL или .so в репозитории: бинарники без исходников — плохой знак. Даже если «можно проверить антивирусом» — это не защита. Свежие вредоносы легко обходят AV.

🟠 Проект выдается за Python, но на деле — просто обёртка над C++ с сомнительным качеством кода и новизной автора.

🟠 Фантастические бенчмарки: когда обещают, что «в 10 раз быстрее Pandas» — это требует доказательств и воспроизводимых тестов.

🟠 Удаление комментариев и агрессивное поведение: нет открытого диалога, только эмоции, эмодзи и попытка стереть негатив.

🟠 Нарушения базовых практик: даже элементарные ошибки в Python-коде (например, вывод ошибок в stdout вместо stderr), что странно для C++-разработчика.

PyPI и GitHub больше не гарантируют безопасность
Теперь важен не только open source, но и open build chain:
— есть ли CI/CD?
— как собираются бинарники?
— воспроизводим ли релиз?

Как обезопасить себя:
— Не ставьте pip install с непроверенных проектов
— Всегда читайте исходники перед установкой, особенно если есть нативный код
— Используйте виртуальные окружения или Docker для тестов
— Сканируйте зависимости через safety или pip-audit

А вы проверяете код, прежде чем ставить библиотеку с GitHub? Кто должен проверять (PyPI / GitHub или же пользователь)?
❤️ Всегда
😁 Только если мало звёзд
👍 Кто вообще так делает, просто pip install

Библиотека питониста #междусобойчик
Please open Telegram to view this post
VIEW IN TELEGRAM
👍16😁62
🛡 Runtypes — безопасная валидация структур в TypeScript

Когда вы получаете непроверенные данные (например, из JSON, API, локального хранилища), обычные типы TypeScript никак не защищают вас от ошибок времени выполнения.

😶‍🌫️ Runtypes позволяют валидировать такие данные на лету, описывая структуру через валидаторы, а не просто типы.

😶‍🌫️ Пример

Типы на TypeScript:
type Vector = [number, number, number]
type Planet = { type: "planet", location: Vector, mass: number, population: number, habitable: boolean }


Валидация через Runtypes:
import { Number, Boolean, Tuple, Literal, Object } from 'runtypes'

const Vector = Tuple(Number, Number, Number)
const Planet = Object({
type: Literal("planet"),
location: Vector,
mass: Number,
population: Number,
habitable: Boolean,
})


Проверка данных:
Planet.check(someValue)  // выбросит ошибку, если структура не совпадает


Если структура не соответствует ожидаемой:
— выбрасывается ValidationError
— доступен объект failure с подробностями:
➡️ где именно ошибка
➡️ что ожидалось и что получено
➡️ можно использовать для i18n и UI

😶‍🌫️ Что поддерживает Runtypes

— Примитивы
— Объекты и массивы
— Кортежи
— Объединения (Union)
— Пересечения (Intersect)
— Пользовательские ограничения (например, длина массива)
— Валидация вложенных структур

😶‍🌫️ Когда пригодится

— Проверка данных из API, JSON, UI
— Сложная вложенная структура, которую нужно валидировать
— Автогенерация UI и ошибок
— Безопасность в рантайме (а не только на этапе компиляции)

🔗 GitHub: https://clc.to/H_xiTA

Библиотека питониста #буст
Please open Telegram to view this post
VIEW IN TELEGRAM
7👍2🔥1
💻 Вайб-кодинг: что это такое и как к нему относятся IT-специалисты и работодатели

97% разработчиков уже пробовали использовать ИИ для написания кода.

Но упрощает ли это работу — или мешает развитию? Как «код по вайбу» влияет на качество, обучение и доверие со стороны работодателей?

📝 В статье:
— Что такое вайб-кодинг
— Почему джунам проще, но опаснее
— Как компании смотрят на ИИ-помощников в коде
— Где грань между продуктивной автоматизацией и потерей контроля

📖 Читайте статью: https://proglib.io/sh/vtER5zUeOF

Библиотека питониста #буст
😁8👍32👏1
📱 Свежие релизы Python‑пакетов за последние 7 дней

🚨 Важное
Phishing-атака на PyPI-пользователей — если вы публиковали пакеты на PyPI и указали email в metadata, остерегайтесь писем с темой "[PyPI] Email verification" от [email protected] (заметили подмену — pyp**j**, а не pyp**i**).

📦 Новые и заметные релизы
llama-index 0.13.0 — интерфейс между LLM и вашими данными
pip 25.2.0 — свежий апдейт пакетного менеджера
keras 3.11.0 — глубокое обучение
flax 0.11.0 — нейросети на JAX
docutils 0.22.0 — генерация документации из reStructuredText
trl 0.20.0 — обучение трансформеров с подкреплением
narwhals 2.0.0 — совместимость Pandas, Polars и других DataFrame
autogen 0.7.1 — фреймворк для агентного ИИ
sse-starlette 3.0.0 — поддержка Server-Sent Events в Starlette
lightning-utilities 0.15.0 — полезности для экосистемы PyTorch Lightning
optree 0.17.0 — утилиты для PyTree-структур

🔥 Опыт других
Парсим Авито без ограничений — создание кастомного парсера
Старая оптимизация больше не работает — как изменения в Python ломают старые подходы

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

ML/CV python backend разработчик —‍ от 350 000 до 400 000 ₽, удалёнка

Python Backend Developer —‍ от 250 000 ₽, удалёнка

Middle Python Developer —‍ от 2800 до 3200 $, удалёнка

Senior System Engineer (Python / Golang) —‍ от 400 000 до 460 000 ₽, удалёнка

Python разработчик —‍ от 300 000 ₽, удалёнка

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

Библиотека питониста
Please open Telegram to view this post
VIEW IN TELEGRAM
1👍1😁1
🛠 How to: писать проще в Python без лишних классов

Классы — это хорошо, когда они действительно нужны. Но в Python часто можно обойтись без них, используя более простые и питоничные решения.

Вот как можно упростить ваш код:

🔹 Нужно просто хранить данные?

Используйте @dataclass или namedtuple:
from dataclasses import dataclass

@dataclass
class Point:
x: int
y: int

p = Point(1, 2)


🔹 Нужна утилита без состояния?

Пишите обычные функции:
def add(a, b):
return a + b


🔹 Хотите сгруппировать настройки или константы?

Создайте модуль:
# config.py
HOST = 'localhost'
PORT = 8080'


# main.py
import config
print(config.HOST)


🔹 Храните простое состояние?

Используйте списки или словари:
inventory = []
inventory.append('apple')


🔹 Простая трансформация данных?

Пишите через list comprehension или lambda:
result = [x * 2 for x in data]


Или:
transform = lambda data: [x * 2 for x in data]


🔹 Работаете с конфигами или сериализацией?

Воспользуйтесь стандартными модулями:
import json

config = {'host': 'localhost', 'port': 8080}
with open('config.json', 'w') as f:
json.dump(config, f)


▶️ Когда классы действительно полезны:
• если есть состояние + поведение
• если нужен шаблон для объектов
• если проект требует наследования или композиции

▶️ Пишите просто. Пишите по-Питони.
Класс — это не всегда решение.
Иногда достаточно функции, модуля или словаря.

▶️ Подробнее можно узнать в статье: https://clc.to/onD8-Q

Библиотека питониста #буст
Please open Telegram to view this post
VIEW IN TELEGRAM
13👍4😁2💯2🤔1🌚1
🤔 Зачем вообще понимать, как работает ML?

Сейчас многие просто запускают модельку в sklearn — и радуются точности 0.92.

Вроде всё работает… но почему?
А когда сломается — что делать?


Машинное обучение — это система, которую можно понять.

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

👉 Мы сделали курс, чтобы в это было реально въехать:

— без сложных формул;
— с интуитивными объяснениями;
— от простого к сложному.

Если хочешь перейти от «гуглю код» к «понимаю, как это работает» — ты по адресу!

Стартуем в сентябре — бронируй место на курсе уже сейчас
3👍1
🚚 Delivery Manager: кто это и зачем он нужен в IT

В каждой IT-компании есть деливери-менеджеры, но чётко объяснить, чем они занимаются, может далеко не каждый. Они не совсем проектные менеджеры, не совсем тимлиды — но без них всё разваливается.

➡️ Это не стартовая позиция, но очень востребованная — особенно в зрелых компаниях и крупных проектах.

🔗 Читайте статью, чтобы понять, стоит ли вам двигаться в эту сторону: https://proglib.io/sh/9qwbeKQ0dV

Библиотека питониста #буст
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
2👍2
🎯 Команда дня: вложенные функции в Python

Python позволяет определять функции *внутри* других. Зачем? Чтобы передавать поведение, создавать замыкания, делать partial-функции и, конечно, писать декораторы.

Вложенные функции = функции внутри функций
def greet_me(name="друг"):
def greet():
print("Привет,", name)
greet()


🚩 Внутренняя greet() знает о name, потому что захватила его из внешней функции. Это и есть замыкание — функция «помнит» переменные.

Функция возвращает функцию
def greet_me(name):
def greet():
print("Привет,", name)
return greet

greet_ivan = greet_me("Иван")
greet_ivan() # Привет, Иван


🚩 greet_ivan — это не результат, а сама функция! Причём она «помнит», что name = Иван. Удобно, если нужно повторно вызывать с теми же параметрами.

Создаём функции с «настроенным поведением»
def make_adder(x):
def add(y):
return x + y
return add

add5 = make_adder(5)
add5(10) # ➡️ 15


🚩 Мы создали «фабрику» функций. add5 — это функция, которая всегда добавляет 5. Можно так же легко сделать add10, add100 и т.д.

Своя версия partial-функции
def partial(func, *args, **kwargs):
def new_func(*a, **kw):
return func(*args, *a, **kwargs, **kw)
return new_func

bin_to_int = partial(int, base=2)
bin_to_int("1101") # ➡️ 13


🚩 Мы зафиксировали аргумент base=2 и получили удобную функцию bin_to_int(), которая всегда читает двоичное число. Быстро и понятно!

Декораторы работают точно так же
def log(func):
def wrapper(*args, **kwargs):
print("Вызов", args, kwargs)
result = func(*args, **kwargs)
print("Результат", result)
return result
return wrapper


🚩 log — это функция, которая возвращает функцию-обёртку. Эта обёртка добавляет логирование вокруг вызова оригинальной функции. Никакой магии — только вложенные функции и замыкание.

Что нужно запомнить:
✔️ Вложенные функции — удобный способ передавать и «запоминать» контекст
✔️ Замыкание — функция несёт с собой значения переменных
✔️ partial и декораторы — мощные приёмы, основанные на этих идеях

Библиотека питониста #буст
Please open Telegram to view this post
VIEW IN TELEGRAM
8👍5🔥3😁3
✔️ Чек-лист: как отлаживать ошибки в Python

1️⃣ Чтение Traceback’ов (сообщений об ошибках)

*️⃣ Читайте каждую строку сообщения об ошибке внимательно.
*️⃣ Определите файл и строку, в которой возникла ошибка.
*️⃣Обратите внимание на тип ошибки (NameError, TypeError, SyntaxError и т. д.).
*️⃣ Ознакомьтесь с пояснением ошибки — оно поможет понять, что пошло не так.

2️⃣ Использование print() для отладки

*️⃣ Добавляйте print() до и после участков, вызывающих сомнения.
*️⃣ Используйте f-строки для наглядности: print(f"{переменная = }").
*️⃣ Следите за порядком выполнения кода и значениями переменных.
*️⃣ После устранения ошибки удаляйте print() или заменяйте на logging.

3️⃣ Использование breakpoints и отладчика

*️⃣ Устанавливайте точки останова в редакторе кода (например, VS Code, PyCharm).
*️⃣ Используйте встроенную функцию breakpoint() для остановки выполнения.
*️⃣ В режиме отладки применяйте команды:
n — выполнить следующую строку (next)
s — перейти внутрь функции (step)
c — продолжить выполнение (continue)
p переменная — вывести значение переменной

4️⃣ Отладка с помощью тестов

*️⃣ Пишите юнит-тесты для всех функций (с помощью unittest или pytest).
*️⃣ Тестируйте как корректные случаи, так и крайние (edge cases).
*️⃣ Используйте тесты для воспроизведения ошибок.
*️⃣ Запускайте тесты регулярно: python -m unittest или pytest.

5️⃣ Общий подход к отладке

*️⃣ Читайте полное сообщение об ошибке, а не только последнюю строку.
*️⃣ Изолируйте проблему — сократите код до минимального примера с ошибкой.
*️⃣ Проговаривайте код вслух или объясняйте его — это помогает найти ошибки.
*️⃣ Делайте частые коммиты, чтобы проще было вернуться к рабочей версии.

Библиотека питониста #буст
Please open Telegram to view this post
VIEW IN TELEGRAM
👍84🔥3🤩2🥱1