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

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

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

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

По рекламе: @proglib_adv
РКН: https://gosuslugi.ru/snet/67b885cbd501cf3b2cdb5b36
Download Telegram
📐 Новый модуль imath в Python: математика для целых чисел

На протяжении многих лет модуль math в Python становился все более перегруженным. Он начинался как обёртка над C-стандартом математических функций (в основном — с плавающей точкой), но со временем туда добавили и функции, не имеющие к нему отношения: math.gcd(), math.factorial(), math.isqrt() и другие.

Это породило путаницу:
— В документации math указано, что функции возвращают float, но это не так для math.gcd() или math.factorial().
— Невозможно чётко описать, какие типы аргументов принимает каждая функция.
— Сложнее разобраться, где искать нужные функции: целочисленные, статистические, комплексные — все перемешаны.

Что предлагает PEP 791

Создать новый модуль imath, в котором будут собраны функции, работающие строго с целыми числами. Все возвращаемые значения — тоже целые (int).

Вот список функций, которые переедут из math в imath:
🔎 comb() — число сочетаний
🔎 factorial() — факториал
🔎 gcd() — наибольший общий делитель
🔎 isqrt() — целочисленный квадратный корень
🔎 lcm() — наименьшее общее кратное
🔎 perm() — число размещений

Их аналоги в math сохранятся, но будут мягко устаревшими (soft deprecated) — они останутся в коде, но будут помечены как нежелательные к использованию.

В PEP пока не входят новые функции, но обсуждается возможное расширение: число Делануа, тесты на простоту и другие инструменты теории чисел.

📌 Вывод: imath — это шаг к более чистой архитектуре стандартной библиотеки. Целые числа заслужили свой модуль.
Что думаете? Стоит ли Python разделять модули дальше по специализации?

🔗 Подробнее в PEP 791: https://clc.to/POzTkw

Библиотека питониста #свежак
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2253🔥2💯2
🤖 ML в продакшене — что происходит после деплоя

Запустить модель в прод — это только начало. Дальше начинается самое интересное:
— Поведение пользователей меняется
— Данные плывут
— Качество модели может незаметно упасть

Чтобы не проспать деградацию, нужна система:
🤖 Метрики
🤖 Мониторинг
🤖 Алерты
🤖 A/B-тесты
🤖 Готовность переобучить модель

В новой статье рассказываем, как организовать контроль качества ML-модели после релиза и не потерять бизнес-метрики в продакшене.

📎 Читайте подробнее: https://proglib.io/sh/fjpFLVWn8Z

Библиотека питониста
Please open Telegram to view this post
VIEW IN TELEGRAM
👍72🔥1
This media is not supported in your browser
VIEW IN TELEGRAM
🔐 pipask — безопасная установка Python-пакетов без потери удобства

Устанавливаете пакеты через pip? А вы уверены, что именно устанавливаете?

pipask — это drop-in замена для pip, которая проверяет безопасность пакета до установки.

В отличие от обычного pip, который может запускать сторонний код, чтобы узнать зависимости, pipask использует безопасные метаданные с PyPI. Если всё же требуется выполнить внешний код — система предупредит и попросит согласие.

👉 Установка (лучше через pipx):
pipx install pipask
# или
pip install pipask


💡 Используется точно так же, как pip:
pipask install requests
pipask install 'fastapi>=0.100.0'
pipask install -r requirements.txt


💡 Для удобства можно сделать alias:
alias pip='pipask'


Какие проверки выполняет pipask перед установкой:
— Популярность репозитория
— Возраст пакета и релиза
— Уязвимости в базе PyPI
— Кол-во загрузок за месяц
— Проверка метаданных (лицензия, статус разработки, снятие с публикации)

🔍 Хотите просто проверить, не устанавливая? Используйте --dry-run:
pipask install some-package --dry-run


Библиотека питониста #буст
👍5❤‍🔥531
Наверное, да... или всё же нет? 😃

Библиотека питониста #развлекалово
😁14💯3👏21👍1
🥵 Устали от статей, где эйчары рассказывают, как на самом деле выглядит рынок труда в ИТ?

Мы тоже! Поэтому решили узнать правду и представить ее всем айтишникам — но нам нужен ваш голос. Опрос займет 3 минуты, а пользы — вагон для всего сообщества.

Результаты этого исследования помогут понять, как специалистам искать работу в 2025-м (а компаниям — специалистов).

👉 Если вы готовы сделать свой вклад в исследование — велком: https://clc.to/VGgyNA
👍1😁1
💡 Прокачай Python: потоки, процессы и производительность

Хотите ускорить свои Python-приложения и сделать их более отзывчивыми?

🔝 Это видео — отличное руководство по конкурентному и параллельному программированию в Python.

🔧 Что разбирают в видео:
— В чём разница между конкурентностью и параллелизмом
— Как использовать многопоточность (threading) для одновременного выполнения задач
— Как добиться настоящего параллелизма с multiprocessing
— Что такое GIL и как обойти его ограничения
— Как безопасно делить данные между потоками через mutex'ы
— Как реализовать фоновую обработку, чтобы избежать блокировок API

Подходит для разработчиков любого уровня.

🔗 Смотреть видео: https://clc.to/uZgzbw

Библиотека питониста #буст
Please open Telegram to view this post
VIEW IN TELEGRAM
👍42😁1
🎬 Документальный фильм о Python

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

🤔 Лично я впервые вижу, чтобы про язык программирования снимали полноценный документальный фильм.

Будет ли он интересен не только разработчикам, но и широкой аудитории?
💬 Что думаете? Делитесь в комментариях!

🔗 Ссылка на трейлер: https://clc.to/GHAsrg

Библиотека питониста #свежак
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12🔥6🤔4😁21🤩1
✉️ Вопросы подписчиков: какой фичи вам не хватает в Python?

Сегодня делимся коротким, но метким вопросом от подписчика:

«А какой фичи вам не хватает в Python?»

💬 Вот что он пишет:
«Мне лично не хватает поддержки payload’ов в Enum по умолчанию.
Хотелось бы, чтобы можно было удобно передавать значения в Enum, как это реализовано в Rust или Swift.

Например:
from enum import Enum
from datetime import datetime, timedelta

class TimeInForce(Enum):
GTC = "GTC"
DAY = "DAY"
IOC = "IOC"
GTD(d: datetime) = d # хотелось бы так!


И дальше:
d = datetime.now() + timedelta(minutes=10)
tif = TimeInForce.GTD(d)


Чтобы TimeInForce.GTD содержал бы datetime как полезную нагрузку.
Сейчас это можно сделать, но только с обходными путями — выглядит громоздко и неинтуитивно.»


➡️ А какой фичи не хватает вам? Поддержки pattern matching? Статической типизации как в TypeScript? Или чего-то другого?

🧠 Поделитесь в комментариях своим мнением и идеями!

🔎 Поделитесь своим опытом и полезными советами в комментариях!
P.S. Если хотите задать вопрос, заполните нашу гугл-форму. Это займет 5 минут.

Библиотека Python-разработчика #междусобойчик
Please open Telegram to view this post
VIEW IN TELEGRAM
5👍4
🪅 Команда дня: разбираемся с функциями высшего порядка

Хотите писать чистый, читаемый и лаконичный код без явных циклов? Тогда самое время освоить функции высшего порядка — map(), filter() и reduce().

Эти инструменты из арсенала функционального программирования помогают эффективно обрабатывать и трансформировать данные. А главное — они уже встроены в Python и легко применимы на практике.

💡 Что такое функции высшего порядка

Функции высшего порядка — это функции, которые:
— принимают другие функции как аргументы,
— или возвращают функции в качестве результата.

В Python это не только map(), filter() и reduce(), но и любые функции, работающие с другими функциями.

map(): применяем функцию ко всем элементам

Используется для трансформации каждого элемента в итерируемом объекте:
string_numbers = ["1", "2", "3", "4"]
int_numbers = map(int, string_numbers)
print(list(int_numbers)) # [1, 2, 3, 4]


Или, например:
def add_five(x): return x + 5
numbers = [1, 2, 3]
result = map(add_five, numbers)
print(list(result)) # [6, 7, 8]


filter(): фильтруем по условию

Отбирает элементы, удовлетворяющие определённому условию:
data = [0, None, 1, 2, None, 3]
filtered_data = filter(None, data)
print(list(filtered_data)) # [1, 2, 3]


Пример с четными числами:
def is_even(x): return x % 2 == 0
numbers = [1, 2, 3, 4, 5, 6]
even_numbers = filter(is_even, numbers)
print(list(even_numbers)) # [2, 4, 6]


reduce(): аккумулируем значения

Функция из модуля functools, применяется для накопления результата по итерации:
from functools import reduce

def add(x, y): return x + y
numbers = [1, 2, 3, 4, 5]
result = reduce(add, numbers)
print(result) # 15


Пример нахождения максимума:
def max_value(x, y): return x if x > y else y
numbers = [10, 2, 33, 4, 7]
result = reduce(max_value, numbers)
print(result) # 33


Библиотека питониста #буст
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥16👍4❤‍🔥22
📱 7 скрытых возможностей стандартной библиотеки Python

Даже если вы давно работаете с Python, в стандартной библиотеке наверняка найдётся что-то, о чём вы ещё не знали.

Мы собрали 7 недооценённых модулей, которые помогут:
🤖 Улучшить структуру и читаемость кода
🤖 Оптимизировать производительность
🤖 Упростить распространение ваших программ

📖 Подробнее — в полной статье: https://clc.to/9eN3cA

Библиотека питониста #буст
Please open Telegram to view this post
VIEW IN TELEGRAM
👍195❤‍🔥2🔥1
💭 Холивар: использовать ли type hints в Python повсеместно?

Мидл-разработчик выкатил pull request: всё строго типизировано, каждый аргумент и возврат аннотирован, IDE ликует.
Но на ревью лида — буря: «Это ж Python, а не Java! Зачем эти -> str в каждой функции? У нас же динамика!»

Мидл парирует: «Type hints помогают IDE, автодополнению, рефакторингу. Упростят жизнь через месяц!»
Лид в ответ: «Ты тратишь время на синтаксический сахар. Питон не про это!»

Команда разделилась. Кто-то за лаконичный питон с duck typing, кто-то за строгую культуру типов.

А вы что скажете? Как вы используете type hints в своих проектах на Python?

👇 Голосуем в комментах:

❤️ Type hints — маст хэв
👍 Type hints только тормозят

P.S. Инструкция, как оставить коммент

Библиотека питониста #междусобойчик
114👍11