Библиотека питониста | Python, Django, Flask
40.7K subscribers
2.71K photos
74 videos
51 files
4.29K links
Все самое полезное для питониста в одном канале.

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

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

По рекламе: @proglib_adv
РКН: https://gosuslugi.ru/snet/67b885cbd501cf3b2cdb5b36
Download Telegram
👏 Набор настоящего питониста

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

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

💭 Какое обновление Python сильнее всего повлияло на ваш стиль кода?

❤️ f-строки — читаемо и быстро
👍 @property — красиво и по-взрослому
🔥 Переключение зависимостей — как глоток свежего воздуха
😁 Shared vs independent списки — багов наловил, но стал умнее
🤔 Свой вариант — пишите в комментариях

Библиотека питониста #развлекалово
Please open Telegram to view this post
VIEW IN TELEGRAM
17🔥5👍3😁2
😈 PEP’ы, которые бесят (или радуют) питонистов

Каждый раз, когда появляется новый PEP, в воздухе пахнет жареными клавишами.

Поговорим о классике — тех, что навсегда в сердцах (или в чёрном списке):

1⃣ PEP 8 — стиль, который «все соблюдают, но не до конца»

Отступы, длина строк, имена переменных...
Каждый линтер и IDE пытается напомнить: «Вы не следуете PEP8!»
Но разве 81 символ в длину — это преступление?
➡️ Главный источник пассивной агрессии в код-ревью.

2⃣ PEP 484 — Типизация, которая «не настоящая, но работает»

Hello, type hints...
Python стал делать вид, что он статически типизирован.
А mypy стал делать вид, что всё это имеет смысл.
➡️ Кто-то говорит «будущее», кто-то — «шум и пыль».

3⃣ PEP 572 — Моржик `:=`, который разделил сообщество

Пример:
while (line := file.readline()):
print(line)


Одни: «Удобно! Элегантно!»
Другие: «Python теперь как Perl. Брр.»
➡️ Мемов стало больше. Это уже плюс.

🪅 Бонус-треки:
PEP 517/518 — «Половина питонистов не знает, как работает их pyproject.toml»
PEP 505 (предложение) — `None-aware operators` — ждали, надеялись, не приняли
PEP 701 — f-строки 2.0! Вставляйте хоть выражения, хоть тернарные операторы

🫠 Есть ли у вас любимый (или самый раздражающий) PEP?
Как считаете, нужны ли PEP'ы в таком количестве, или Python уже слишком зарегулирован?

Библиотека питониста #междусобойчик
Please open Telegram to view this post
VIEW IN TELEGRAM
11👍61❤‍🔥1
👋 Всем привет!

Мы ищем участников для интервью на тему «Обучение навыкам в IT»!

✔️ Кто нам нужен?
— Вы разработчик или дата сайентист, прокачивающий свои навыки. Или хотите войти в IT.

✔️ Что нужно сделать?
— Заполните гуглоформу по теме (займет не более 10 минут).
— Если нас заинтересует ваш опыт, мы пригласим поучаствовать в небольшом интервью по Zoom (не больше 45 минут).
— Вознаграждение: 1500 рублей на карту за участие + уникальный шанс пообщаться с нашим CEO!

🧑‍💻 Откликнуться.
Please open Telegram to view this post
VIEW IN TELEGRAM
2❤‍🔥1👍1😁1
🐍 Python новости

🚀 Релизы и инструменты:
PEP 750 принят — шаблонные строки в Python
Python 3.14 и грядущие изменения — фичи альфы и планы до фризов
httpdbg— удобная отладка HTTP-запросов в Python
runvenv — shebang + venv: запускаем Python-скрипты из нужного venv
NVIDIA добавила нативную поддержку Python в CUDA

🧪 Глубже в Python:
uv + PEP 723 — простой деплой Python-скриптов
Tail-calling: новый интерпретатор CPython — что меняется под капотом
Контроль времени в тестах— freeze, mock, Clock
Гайд по overload — пишем один код для разных бэкендов
Тонкости логгирования в Python — кратко и по делу
Создаем ретро-оконный менеджер на Python — стиль Windows 3.x

💭 Истории, подходы, мышление:
Как я стал core-разработчиком Python в 19 лет
Путь воина: Python + Go через Цеттелькастен — кому подходит
Антипаттерны: ломкие функции в Python — как не писать хрупкий и нестабильный код

🌐 Django и веб:
Django 5.2: что нового — поддержка PEP 649, улучшения ORM и не только
User onboarding в Django — как улучшить первый опыт пользователя
Отслеживание изменений моделей с django-pghistory — как логировать историю данных

💻 Экосистема:
Режим агента в VS Code — теперь для всех

🎮 Fun/DIY:
3D-игра на Python своими руками — от идеи до рабочего примера

Библиотека питониста #свежак
5👍3❤‍🔥11
🔖 Это база: секрет Python, который ускорит ваш код в миллионы раз

lru_cache — декоратор для кеширования результатов функций. Повторные вызовы с теми же аргументами не вычисляются заново — это ускоряет код в разы.

Пример:
from functools import lru_cache

@lru_cache(maxsize=128)
def fibonacci(n):
if n < 2:
return n
return fibonacci(n - 1) + fibonacci(n - 2)

print(fibonacci(30)) # Выводит: 832040
print(fibonacci.cache_info()) # Статистика кеша


С lru_cache результаты сохраняются в кеше и повторно используются, что ускоряет выполнение.

🚩 Возможные применения:
— Рекурсивные функции
— Повторяющиеся запросы к базе данных
— Повторные API-запросы

Пример:
import requests
from functools import lru_cache

@lru_cache(maxsize=32)
def get_weather(city):
response = requests.get(f"https://api.weather.com/data?city={city}")
return response.json()

print(get_weather("New York")) # Первый вызов
print(get_weather("New York")) # Кешированный ответ


🚩 Как работает lru_cache

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

Настройка размера кеша

Параметр maxsize позволяет регулировать размер кеша:
— None — неограниченный размер кеша
— Число — ограничение на количество записей в кеше

Пример:
@lru_cache(maxsize=256)
def expensive_computation(x, y):
return x * x + y * y


Обработка изменяемых аргументов

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

Пример:
@lru_cache(maxsize=32)
def process_data(data_tuple):
return sum(data_tuple)

data = [1, 2, 3, 4]
print(process_data(tuple(data))) # Преобразуем список в кортеж


Очистка кеша

Для этого можно использовать метод cache_clear().

Пример:
expensive_computation.cache_clear()


🚩 Преимущества:
— Ускорение работы функций
— Легкость внедрения с @lru_cache
— Поддерживает статистику

🚩 Недостатки:
— Возможен рост потребления памяти при maxsize=None
— Поддерживаются только хешируемые аргументы

Библиотека питониста #буст
Please open Telegram to view this post
VIEW IN TELEGRAM
👍112❤‍🔥11
📱 Шесть релизов Python за один день: вот это весна 2025-го

Во вторник, 8 апреля 2025 года, Python-команда выдала настоящий релизный фейерверк — сразу шесть новых версий Python. Это, без сомнений, один из самых насыщенных дней в истории языка.

Python 3.14.0a7 — финальный альфа-релиз
— Дата релиза: 8 апреля 2025
— Следующий шаг: 3.14.0 beta1 (6 мая 2025)
— Статус: последний альфа-релиз — до фич-фриза осталось меньше месяца

Ключевые изменения в 3.14:
PEP 649: отложенная (lazy) обработка аннотаций
PEP 741: новый C API для конфигурации интерпретатора
PEP 758: поддержка except и except* без скобок
PEP 761: вместо PGP теперь используется Sigstore для верификации релизов
PEP 765: запрет return/break/continue при выходе из finally
PEP 768: безопасный интерфейс для внешних дебаггеров CPython
Новый тип интерпретатора с улучшенной производительностью (опционально)
Поддержка UUID версий 6–8 + ускоренная генерация 3–5 и 8 (до 40% быстрее)
Улучшенные сообщения об ошибках
Удаления и депрекейты в C API и Python-коде

Python 3.13.3
— 320 исправлений, улучшений сборки и документации
— Актуальная стабильная ветка с новыми возможностями и оптимизациями

Python 3.12.10 — последний багфикс-релиз
— Более 230 исправлений и улучшений
— С этого момента — только security-патчи

🪅 Обновления безопасности для:

Python 3.11.12
Deadlock fix
— Обновления expat, уязвимость imaplib, urlparse, и др.

Python 3.10.17
— Обновления libexpat, CVE-2025-0938, imaplib OOM

Python 3.9.22
— Последние security-фиксы для старой, но ещё поддерживаемой ветки

💡 Призыв к разработчикам:
— Обновите свои проекты, если вы на 3.9–3.13
— Протестируйте Python 3.14 на совместимость
— До фич-фриза осталось < 4 недель — добавляйте свои предложения

Библиотека питониста #свежак
Please open Telegram to view this post
VIEW IN TELEGRAM
7👍3🎉21😁1
Media is too big
VIEW IN TELEGRAM
🙂 Раскрываем секрет собственных векторов: математическое оружие на собеседовании

Что объединяет успешный собес и продвинутый анализ данных? Оба требуют способности выделять главное из информационного шума!

В мире данных этот суперскилл называется методом главных компонент (PCA) — это как рентген для ваших данных, который мгновенно показывает всю суть, отбрасывая неважные детали.

Например, мы проанализировали 453 акции компаний из списка S&P 500 и выяснили, что всего одна главная компонента объясняет 38% всей динамики рынка. Как такое возможно?

😘 Расскажем на воркшопе «Математика машинного обучения на практике» 21 апреля!

Вы будете работать с реальными данными, научитесь выявлять скрытые закономерности и применять эти инсайты в своих проектах.

Стоимость: 3990 ₽

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

➡️ Забронировать место на воркшопе: https://proglib.io/w/6f0e5775
Please open Telegram to view this post
VIEW IN TELEGRAM
3👍1😁1
⌨️ Топ-вакансий для питонистов за неделю

Senior Python-разработчик — от 250 000 до 300 000 ₽, гибрид (Москва)

Python разработчик (Middle+/Senior) — от 3000 до 4000 $, удалённо (Бали)

Tech lead Python developer — от 400 000 до 600 000 ₽, удалённо (Бали)

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

Python-разработчик (Junior/Middle) — от 1 500 до 3 100 $, удалённо

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

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

Подготовили для вас краткую, но ёмкую шпаргалку по основным методам работы со словарями. Систематизировано и понятно.

Библиотека питониста #буст
Please open Telegram to view this post
VIEW IN TELEGRAM
👍173❤‍🔥11😁1
💪 TARIFF величайший Python-пакет, который делает импорты «великими» снова

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

Установка:
pip install tariff


Использование:
import tariff

# Устанавливаем пошлины (название_пакета: процент)
tariff.set({
"numpy": 50, # 50% пошлина на numpy
"pandas": 200, # 200% на pandas
"requests": 150 # 150% на requests
})

# Теперь при импорте эти пакеты будут замедлены!
import numpy # +50% к времени импорта
import pandas # +200%


➡️ Как работает:
— TARIFF измеряет время оригинального импорта
— Умножает его на тариф
— Показывает триумфальное сообщение о введённых санкциях

➡️ Ссылка на репозиторий: https://clc.to/0TnspA

Библиотека питониста #свежак
Please open Telegram to view this post
VIEW IN TELEGRAM
😁43👍5❤‍🔥22👏1
От многомерности к сути: чему нас учит PCA

На собеседовании важно уметь выделить главное — свои сильные стороны, мышление и ценности. Это помогает справляться со стрессом, неожиданными вопросами и субъективной оценкой.

В машинном обучении есть похожий подход — PCA (метод главных компонент). Он сокращает размерность данных, устраняя шум и второстепенные детали, и помогает сфокусироваться на самом важном.

В новой статье мы разберём:
• Как работает PCA
• Зачем он нужен
• Как применять его на практике — например, для анализа доходностей акций S&P 500

🐸 Подробнее: https://proglib.io/sh/uXsDlt75MY

Библиотека питониста
Please open Telegram to view this post
VIEW IN TELEGRAM
5👍4😁2
✔️ Лучшие практики импорта модулей в Python

В этом посте рассмотрим лучшие практики импорта модулей в Python, чтобы код был чистым и эффективным.

1⃣ Используйте явный импорт

Старайтесь использовать явный импорт, а не from module import *, чтобы избежать конфликтов имен и улучшить читаемость кода.

# Плохо
from math import *

# Хорошо
from math import sqrt, pi


Явный импорт помогает лучше понять, какие именно функции или классы используются в вашем коде, и предотвращает «загрязнение» пространства имен.

2⃣ Группируйте импорты правильно

Существует стандартная практика группировки импортов, которая улучшает структуру кода и делает его более читаемым:
➡️ Стандартные библиотеки
➡️ Третьи библиотеки
➡️ Локальные модули

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

# Стандартные библиотеки
import os
import sys

# Третьи библиотеки
import requests
import numpy as np

# Локальные модули
from my_module import my_function


3⃣ Используйте абсолютные импорты

Абсолютные импорты — это указание полного пути до модуля, начиная от корня пакета. Это делает код более понятным и избегает проблем с относительными импортами, особенно в крупных проектах.

# Плохо
from .module import function

# Хорошо
from my_project.module import function


4⃣ Избегайте циклических импортов

Циклические импорты — это когда два или более модуля зависят друг от друга, что может привести к ошибкам при импорте.

Чтобы избежать таких проблем:
➡️ Разделяйте модули, чтобы минимизировать зависимость
➡️ Используйте импорты внутри функций или методов, если нужно избежать циклических зависимостей

# Плохо
# module_a.py
from module_b import function_b

# module_b.py
from module_a import function_a

# Хорошо
# module_a.py
def function_a():
from module_b import function_b
...


5⃣ Соблюдайте принцип «Не импортируйте то, что не используете»

Импортируйте только те модули, функции или классы, которые действительно будут использованы в коде. Это улучшает производительность и делает код чище.

# Плохо
import math

# Хорошо
from math import sqrt


6⃣ Пользуйтесь псевдонимами для часто используемых библиотек

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

# Хорошо
import numpy as np
import pandas as pd

# Плохо
import numpy
import pandas


7⃣ Обрабатывайте ошибки импорта

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

try:
import some_library
except ImportError:
print("Не удалось импортировать some_library. Убедитесь, что она установлена.")


Библиотека питониста #буст
Please open Telegram to view this post
VIEW IN TELEGRAM
16👍162❤‍🔥1😁1
😆 Будем честны, все мы хоть раз были на YouTube-канале индуса, который обещал сделать сайт за 5 минут, но 40 минут объяснял, как установить Python.

😱 А между прочим, скоро мы можем потерять такой контент.

Нейронки теперь могут менять акценты на лету, так что в следующий раз, возможно, ваш индийский преподаватель станет Джейсоном из Лондона 💂!

Если хотите, пробуйте сами. Заходите на Krisp — 60 минут в день бесплатно.

Библиотека питониста #развлекалово
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10😁7🔥2
💰 Промпт, который поможет построить карьеру Python-разработчику

Хочешь не просто писать код, а расти как специалист и двигаться к роли, о которой мечтаешь?
Вот промпт, который поможет составить персональный план роста — с проектами, нетворкингом и прокачкой скиллов.

✍️ Промпт:
Help me create a personalized career growth plan based on my current role as a [your role] and my long-term goal to become a [desired position].  
Identify key skills I need to develop, high-impact projects I should pursue, and networking strategies to connect with industry leaders.
Include creative ways to showcase my expertise (e.g. speaking opportunities, internal initiatives) and suggest a 90-day action plan to track progress.

Bonus: Recommend 2-3 people I should learn from and what I can study from their career paths.


🌸 Как это работает:
— Помогает построить стратегию карьерного роста под твои цели
— Даёт идеи для прокачки и полезных активностей
— Формирует план на 90 дней + вдохновляет примерами карьер других

🌸 Примеры использования:
— Выйти из Junior уровня и наметить путь к Middle
— Спланировать переход в Team Lead или архитекторы
— Понять, какие активности на работе и вне её помогут выделиться и расти быстрее

Библиотека питониста #буст
Please open Telegram to view this post
VIEW IN TELEGRAM
😁74
🚀 Приручи алгоритмы: из формул в код за один воркшоп

Готовы превратить сложную теорию машинного обучения в практические навыки? Тогда приходите на наш воркшоп, который пройдет 21 апреля.

Что вас ждет на воркшопе:
🟢 Работа с реальными данными — никаких учебных датасетов, только то, что встречается в настоящих проектах.

🟢Снижение размерности с PCA — научитесь выделять главное из информационного шума.

🟢Случайный лес vs градиентный бустинг — разберемся, в чём ключевое различие и когда какой алгоритм эффективнее.

🟢Мастерство гиперпараметров — освоите тонкую настройку моделей для максимальной точности.

На нашем воркшопе вы не просто слушаете — вы делаете сами! Вы будете писать код на Python, применять популярные библиотеки и сразу видеть результат своей работы.

А самое ценное: каждый участник получит персональный code review от Марии Горденко — инженера-программиста, старшего преподавателя НИУ ВШЭ, руководителя магистратуры от ГК Самолет и Альфа-Банка.

Когда: 21 апреля
💸Стоимость: всего 3990₽

Только сегодня, до конца дня: 10 мест по промокоду kulich → 2 990 ₽.

➡️ Записаться на воркшоп: https://proglib.io/w/6f0e5775
👍21
🖥 Чтение или эффективность: что важнее при написании кода

Один из наших подписчиков поднял интересный и часто обсуждаемый вопрос среди разработчиков: что важнее — читаемость или эффективность кода?

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

1️⃣ Проверка на нечётность

Простой способ:
return n % 2 == 1


Быстрее, но сложнее для восприятия:
return bool(1 & n)


2️⃣ Проверка, пуста ли строка

Простой способ:
if len(my_string) == 0:


Быстрее, но менее интуитивно:
if not my_string:


3️⃣ Проверка на наличие элемента в списке

Простой способ:
if element in my_list:


Быстрее, но менее понятно:
try:
my_list.index(element)
except ValueError:
pass


💭 Когда стоит жертвовать читаемостью ради эффективности? Поделитесь своими примерами и мыслями в комментариях!

Библиотека питониста #междусобойчик
Please open Telegram to view this post
VIEW IN TELEGRAM
👍155🔥4
⚙️ Фишка инструмента: Pyre — типизация, которая летает

Pyre— статический анализатор типов, способный проверять миллионы строк кода за секунды. Работает инкрементально и в режиме демона, поддерживает PEP 484 и отлично вписывается в большие проекты.

🔎 Установка и настройка проекта

➡️ macOS:
brew install python3 watchman


➡️ Ubuntu/Debian:
sudo apt-get install python3 python3-pip python3-venv
sudo apt install watchman


➡️ Настройка проекта:
mkdir my_project && cd my_project
python3 -m venv ~/.venvs/venv
source ~/.venvs/venv/bin/activate
pip install pyre-check
pyre init


Инициализация создаст конфигурационные файлы .pyre_configuration и .watchmanconfig.

➡️ Пример запуска:
echo "i: int = 'string'" > test.py
pyre


➡️ Результат:
Found 1 type error!
test.py:1:0 Incompatible variable type [9]: i is declared to have type `int` but is used as type
а: Pyre

Pyre особенно эффективен в крупных кодовых базах и может использоваться в автоматических пайплайнах CI/CD. Он значительно упрощает внедрение строгой типизации и стандартов качества кода в Python-проектах.

🔗 Ссылка на репозиторий: https://clc.to/F4Gx4A

Библиотека питониста #буст
Please open Telegram to view this post
VIEW IN TELEGRAM
👍104❤‍🔥2
Зачем дата-сайентисту дисперсия

Дисперсия — ключевой статистический показатель, который помогает оценить изменчивость данных. Для дата-сайентистов она критична при:

👉 Оценке и интерпретации результатов моделей
👉 Понимании поведения алгоритмов машинного обучения
👉 Снижении ошибок при построении предсказаний

В этой статье разберём, как правильно использовать дисперсию в Data Science и как она влияет на работу алгоритмов, например, в модели Random Forest.

👉 Читайте, чтобы понять, как измерять и учитывать дисперсию: https://proglib.io/sh/GDKYJQdAI2

Библиотека дата-сайентиста
Please open Telegram to view this post
VIEW IN TELEGRAM
❤‍🔥2👍1
Самые догадливые, пишите ответ в комментах 👇

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

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

Библиотека питониста #междусобойчик
5🤔3👍1🌚1👾1