Your trial period has ended!
For full access to functionality, please pay for a premium subscription
PY
Библиотека питониста | Python, Django, Flask
https://t.me/pyproglib
Channel age
Created
Category
Language
Russian
2.26%
ER (week)
5.51%
ERR (week)

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

№5076661349

Messages Statistics
Reposts and citations
Publication networks
Satellites
Contacts
History
Top categories
Main categories of messages will appear here.
Top mentions
The most frequent mentions of people, organizations and places appear here.
📱 Python новости

🚀 Релизы и инструменты:
Python 3.14.0 beta 1 — первые шаги к новому стабильному релизу
ty — супербыстрый type checker на Rust для Python
FastAPI Cloud — новая платформа от команды FastAPI: деплой за секунды
epub-utils — Python-библиотека для работы с EPUB
PyCharm Community — JetBrains больше не будет выпускать бинарные сборки CE

🧠 Советы и статьи:
DI в Python: Easy-DI — упрощаем инъекцию зависимостей
Псевдослучайный random — как Python генерирует случайность
История языков программирования — Python, Java, C++, Go
Ускоряем запуск Python-приложений — коротко и по делу
Инструменты для ускорения разработки — Python-экосистема в деле

Библиотека питониста #свежак
05/11/2025, 13:02
t.me/pyproglib/6705 Permalink
🚨 JetBrains перестанет выпускать бинарные сборки PyCharm Community Edition

Начиная с версии 2025.3, бесплатная версия PyCharm Community Edition больше не будет доступна как готовая программа. JetBrains оставит только исходный код — пользователям придётся собирать IDE самостоятельно.

Что это значит:
📝 Код PyCharm CE останется открытым (Open Source).
📝 Готовые установщики (бинарные сборки) больше публиковаться не будут.
📝 Альтернатива — перейти на PyCharm Unified Edition (новая объединённая IDE с платными и бесплатными функциями).

💬 Это решение уже вызывает волну критики среди пользователей. Установка из исходников — не для всех, а Unified Edition может потребовать платную подписку.

🔗 Подробнее: что такое Unified PyCharm и как это работает

Библиотека питониста #свежак
05/11/2025, 07:46
t.me/pyproglib/6704 Permalink
🖥 Холивар: Linux — для гибкости, macOS — для эстетики, Windows — для универсальности

Программисты, делитесь: на чём предпочитаете писать код?

🐧 Linux: терминал и свобода
📝 Максимальный контроль — можно настроить всё: от ядра до оконного менеджера. Arch, Manjaro, Kali? Полный выбор.
📝 Open Source: свободное ПО без необходимости платить за лицензии.
📝 Терминал — главный инструмент. sudo apt-get install — и всё под контролем.

Минусы:
— Настройка драйверов и оборудования может занять время.
— Работа с проприетарным ПО (например, Photoshop) — отдельный квест.
— Интерфейс не всегда дружелюбен для новичков.

🍎 macOS: стиль и стабильность
📝 Экосистема Apple: Xcode, iOS-разработка, отличная интеграция между устройствами.
📝 Стабильность и надёжность — система работает как часы.
📝 Приятный интерфейс и дизайн, который вдохновляет.

Минусы:
— Высокая цена на устройства.
— Ограниченные возможности апгрейда.
— Закрытая система с меньшей гибкостью.

🪟 Windows: универсальный солдат
📝 Работает «из коробки»: Visual Studio, Unity, .NET — всё готово для разработки.
📝 Поддержка большинства игр и софта.
📝 Огромный выбор устройств: от бюджетных до топовых игровых машин.

Минусы:
— Автоматические обновления могут прервать работу.
— Требуется внимание к безопасности: антивирус — must-have.
— Подсистема WSL — шаг вперёд, но до полноценного Linux ещё есть путь.

А вы на какой стороне?
❤️ Linux — свобода и гибкость
👍 macOS — красота и стабильность
🔥 Windows — универсальность и удобство

Пишите в комментариях, почему ваша ОС — лучший выбор для разработчика. Без ссор — только аргументы и опыт.
P.S. Инструкция, как оставить коммент

Библиотека питониста #междусобойчик
05/10/2025, 11:53
t.me/pyproglib/6703 Permalink
Увы 🥲
Библиотека питониста #развлекалово
05/10/2025, 08:51
t.me/pyproglib/6702 Permalink
😱 14 продвинутых фишек Python, которые вы вряд ли видели

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

В этой подборке — 14 нестандартных приёмов: от «непитоничных» конструкций до малоизвестных трюков, которые помогают писать код гибче, чище и умнее.

🔍 Внутри:
— неожиданные фичи
— примеры и объяснения
— ссылки на ресурсы для углубления

📄 Читайте статью и удивляйтесь, на что способен Python: https://clc.to/YzUlOA

Библиотека питониста
05/09/2025, 19:30
t.me/pyproglib/6701 Permalink
🆕 Появился ty — молниеносный type checker для Python на Rust

Разработчики представили ty — новый инструмент для проверки типов и language server для Python, написанный на Rust. Обещают высокую скорость и удобство интеграции с редакторами.

⚠️ Пока что это pre-release:
— баги,
— отсутствующие фичи,
— возможны критические ошибки.

ty ещё не готов к продакшну, но активно развивается. Инструмент уже вызывает интерес у сообщества — особенно за счёт скорости и амбиций.

👀 Следим за развитием: https://clc.to/1jvRfg

Библиотека питониста #свежак
05/09/2025, 10:08
t.me/pyproglib/6700 Permalink
🎙 Что послушать: Developer Trends 2025

Новый выпуск подкаста Talk Python to Me посвящён главным трендам 2025 года:
➡️ какие технологии на подъёме,
➡️ что показывает последний опрос Stack Overflow,
➡️ и куда движется Python-сообщество.

📌 Темы:
— Стоит ли изучать новые базы данных или это хайп?
— Что теряет актуальность?
— Как поменялись роли разработчиков и ожидания в индустрии?

▶️ Слушать: https://clc.to/4neIiA

Библиотека питониста #буст
05/09/2025, 07:02
t.me/pyproglib/6699 Permalink
✉️ Вопросы подписчиков: какой ваш Python-стек в 2025 году

Сегодня делимся вопросом от подписчика, который интересуется, какие инструменты для Python наиболее актуальны в 2025 году.

💬 Вот что он пишет:
«Я использую VSCode и ChatGPT/Sonnet3.5, когда занимаюсь разработкой ML-решений или оптимизацией в ассемблере/CUDA. Однако ограничивающим фактором является то, что в большинстве случаев ИИ работает на уровне младшего разработчика. Поэтому мне часто приходится проверять информацию в документации и на Google.

Какие IDE и инструменты для ноутбуков вы используете в 2025 году? Например, VS Code, Jupyter, PyCharm — что лучше подходит для работы с данными и ML?

Используете ли вы ИИ-инструменты, такие как Cursor, Copilot или Cline? Если да, то какие задачи они помогают решать в вашем рабочем процессе?»

➡️ Какие ограничения вы встречали при работе с этими инструментами, и что порекомендуете новичкам?

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

Библиотека Python-разработчика #междусобойчик
05/08/2025, 18:20
t.me/pyproglib/6698 Permalink
🔵 11 устаревших Python-модулей, которые следует больше не использовать, и их современные аналоги

Использование старых модулей может привести к неожиданным ошибкам в проектах.

Вот 11 устаревших Python-модулей и их современные аналоги:

1️⃣ Pipes (удален с Python 3.13)

Модуль pipes был удален, так как был заменен более мощным и кросс-платформенным модулем subprocess.

import subprocess

result = subprocess.run("echo Hello | tr a-z A-Z", shell=True, capture_output=True, text=True)
print(result.stdout) # HELLO

2️⃣ typing.Text

Тип Text был предназначен для совместимости с Python 2, и теперь его можно заменить на str.

def greet(name: str) -> str:
return f"Hello, {name}!"

3️⃣ urllib

Модуль urllib устарел для работы с HTTP-запросами. Вместо него лучше использовать requests или urllib3.

import requests

response = requests.post('https://httpbin.org/post', json={'name': 'Yang'})
print(response.json())

4️⃣ crypt

Модуль crypt устарел и его заменил более безопасный модуль bcrypt для хеширования паролей.

import bcrypt

password = b"strongpassword"
hashed = bcrypt.hashpw(password, bcrypt.gensalt())

5️⃣ Устаревшие подсказки типов

С Python 3.9 можно использовать встроенные типы без импорта из модуля typing.

def func(x: list[int]) -> dict[str, int]:
return {}

6️⃣ Старые стили форматирования строк

Использование % или .format() устарело. Современный способ — это f-строки.

name = "Yang"
print(f"My name is {name}.")

7️⃣ cgi

Модуль cgi устарел и заменен современными фреймворками для веб-разработки, такими как Flask или FastAPI.

8️⃣ ossaudiodev

Модуль ossaudiodev устарел, и для работы с аудио рекомендуется использовать такие модули, как pyaudio или sounddevice.

9️⃣ pickle

Модуль pickle может быть опасным для использования, так как есть риски выполнения вредоносного кода. Для безопасной сериализации лучше использовать json.

import json

data = {"name": "Yang"}
with open('data.json', 'w') as f:
json.dump(data, f)

🔟 asyncore и asynchat

Эти модули устарели, и теперь лучше использовать asyncio для асинхронного программирования.

🔟 + 1️⃣ random

Модуль random использует предсказуемый алгоритм, который небезопасен для генерации паролей. Используйте secrets для криптографически стойких случайных чисел.

import secrets

password = secrets.token_hex(16)

Библиотека питониста #буст
05/08/2025, 06:51
t.me/pyproglib/6697 Permalink
🤔
Библиотека питониста #развлекалово
05/07/2025, 18:03
t.me/pyproglib/6696 Permalink
👍 Команда дня: contextlib.suppress

Сегодня разберём полезную команду для работы с contextlib.suppress — удобный способ игнорировать определённые исключения без громоздкого try-except.

from contextlib import suppress

# Игнорируем FileNotFoundError при удалении файла
with suppress(FileNotFoundError):
import os
os.remove("non_existent_file.txt")

Зачем это нужно:
✅ Упрощает код, когда вы хотите молча пропустить определённые ошибки.
✅ Например, удаление файла, который может не существовать, или обработка данных, где некоторые ключи могут отсутствовать.

Пример из реальной жизни:
data = {"name": "Alice"}
with suppress(KeyError):
print(data["age"]) # Не сломается, даже если ключа "age" нет

Библиотека питониста #буст
05/07/2025, 07:55
t.me/pyproglib/6695 Permalink
🏗 7 архитектурных паттернов, которые должен знать каждый программист

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

📌 Мы собрали 7 базовых подходов, которые должен знать каждый разработчик. Подходит для тех, кто хочет прокачать архитектурное мышление, уверенно проходить собеседования и строить проекты «на вырост».

👉 Ссылка на статью: https://clc.to/tgproglibacademy6

Библиотека питониста
05/06/2025, 18:07
t.me/pyproglib/6694 Permalink
🔰 How to: как сделать логические выражения в Python читаемыми

Длинные логические выражения — бич читаемости. Вот простой пример:
if user["verified"] and event["date"] > datetime.now() and not event["full"]:
print("Here's the event signup form...")

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

📝 Разбивка по строкам с операторами в начале
if (user["verified"]
and event["date"] > datetime.now()
and not event["full"]):
print("Here's the event signup form...")

PEP8 рекомендует именно такой стиль — с операторами (and, or) в начале строки.

📝 Использование переменных для подвыражений
user_is_verified = user["verified"]
event_in_future = event["date"] > datetime.now()
event_not_full = not event["full"]

if user_is_verified and event_in_future and event_not_full:
print("Here's the event signup form...")

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

📝 Использование функций вместо переменных
def is_verified(user): return user["verified"]
def in_future(event): return event["date"] > datetime.now()
def not_full(event): return not event["full"]

if is_verified(user) and in_future(event) and not_full(event):
print("Here's the event signup form...")

Функции полезны, если важно сохранить short-circuit поведение (когда выражения дальше не выполняются, если результат уже ясен).

📝 Закон де Моргана для упрощения условий

Если видите выражение вида not (a or b) — можно применить трансформацию:
# Было:
not (a or b)

# Стало:
not a and not b

Пример:
def can_only_read(user):
return not (
user["role"] == "admin"
or "edit" in user["permissions"]
)

Упростим по де Моргану:
def can_only_read(user):
return user["role"] != "admin" and "edit" not in user["permissions"]

Теперь читается проще и интуитивнее.

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

Библиотека питониста #буст
05/06/2025, 07:15
t.me/pyproglib/6693 Permalink
⌨️ Топ-вакансий для питонистов за неделю

Junior Python Developer (Data) — до 200 000, удалёнка

Team Lead (Python) команды разработки — от 350 000 до 450 000 ₽, удалёнка (Москва)

Junior Python developer — от 100 000 до 130 000 ₽, офис (Москва)

Python разработчик, гибрид (Москва, Санкт-Петербург)

Программист Python junior — от 100 000 ₽, гибрид (Москва)

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

Библиотека питониста
05/05/2025, 17:54
t.me/pyproglib/6692 Permalink
🔥 Конкурс: 30 000 ₽ за самую смешную IT-новость

Напоминаем о конкурсе «Библиотеки программиста»: напишите самую смешную версию реальной новости про технологии.

👾 Правила просты:
1. Берете настоящую новость из мира технологий.
2. Переписываете ее так, чтобы смеялись все.
3. Получаете деньги и славу.

🎁 Призы:
- 1 место: 30 000 ₽ + статус ведущего нового юмористического IT-канала
- 2 и 3 место: по 5 000 ₽ + вечный почет в IT-сообществе

🏆 Как будем оценивать:
Мы выложим новости всех участников в одном из наших телеграм-каналов. Те новости, которые наберут больше всего охвата, войдут в шорт-лист. Из шорт-листа подписчики и жюри выберут победителя.

📅 Сроки: прием новостей до 11 мая включительно

Для участия отправьте свою смешную новость в гугл-форму: https://forms.gle/6YShjgfiycfJ53LX8

Осталась неделя — ждем ваших новостей!
05/05/2025, 13:00
t.me/pyproglib/6691 Permalink
Что представляют собой генераторы в Python, как функционирует метод send() в этих генераторах и каким образом его можно применять для управления их поведением?

Генераторы в Python представляют собой функции, которые применяют оператор yield для возврата значений и временной приостановки выполнения. С помощью метода send() можно отправлять данные обратно в генератор, которые затем могут быть использованы при следующем возобновлении его работы. Это делает генераторы двусторонними, позволяя не только получать значения, но и передавать данные внутрь.
05/05/2025, 07:07
t.me/pyproglib/6690 Permalink
📱 Python новости

🚀 Релизы и инструменты:
pip 25.1— поддержка групп зависимостей и вывод lock-файлов
Python 3.15: расписание релиза (PEP 790) — важные даты и этапы разработки
PyCharm стал единым продуктом — что изменилось для разработчиков
AutoKitteh — гибкая альтернатива Zapier и n8n для автоматизации
Django Action Triggers — триггеры действий прямо в Django
IT-календарь: релизы и события мая — чтобы ничего не пропустить

👍 Советы:
Как запускать Python в проде — практики деплоя и окружения
Как я строю инфраструктуру вокруг Python-проектов — линтеры, Poetry, CI/CD и Docker
Управление памятью в Python — когда и зачем вмешиваться вручную
14 интересных фич Python — полезные, хоть и не всегда pythonic

Библиотека питониста #свежак
05/04/2025, 13:06
t.me/pyproglib/6689 Permalink
📚Напоминаем про наш полный курс «Самоучитель по 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
05/03/2025, 20:01
t.me/pyproglib/6688 Permalink
🔎 Wordsearch: узнаем, кто самый внимательный

Готовы проверить свои знания в Python? В этой головоломке спрятаны термины из мира программирования.

Правила просты:
— Найдите все слова в сетке (слова идут по горизонтали)
— Напишите в комментариях, какие слова вы нашли
— Объясните один из терминов так, чтобы даже джун понял

🏆 Первый, кто найдёт все слова и объяснит хотя бы один термин, получит почётный статус Python Guru на неделю!

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

Библиотека питониста #междусобойчик
05/03/2025, 12:53
t.me/pyproglib/6687 Permalink
😆
Библиотека питониста #развлекалово
05/03/2025, 08:51
t.me/pyproglib/6686 Permalink
🎓 Как выбрать свою роль в Data Science и не потеряться в терминах

Если вы только начинаете разбираться в Data Science — перед вами лабиринт из названий: data scientist, аналитик, ML-инженер, BI, архитектор... Кто чем занимается? Что нужно учить?

➡️ Что внутри статьи

— Кто такие Data Engineer

— Чем отличается Data Architect от инженера и зачем он нужен в big data проектах

— Чем занимаются Data Analyst и почему это отличная точка входа в карьеру

— Что делает настоящий Data Scientist

В статье разобрано всё: от задач до технологий, которые реально спрашивают на собеседованиях.

📎 Ссылка

Азбука айтишника #ликбез
05/02/2025, 18:37
t.me/pyproglib/6685 Permalink
🔰 Модуль enum: обзор

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

🟠 Создание перечислений с Enum и auto

Перечисления позволяют избежать ошибок с опечатками и делают код более читаемым.

Пример с конкретными значениями:
from enum import Enum

class TempUnit(Enum):
CELSIUS = "celsius"
FAHRENHEIT = "fahrenheit"

def get_temperature(city, unit):
return 18.0 if unit == TempUnit.CELSIUS else 64.4

print(get_temperature("Lisbon", TempUnit.CELSIUS)) # 18.0

Перечисления упрощают работу с значениями:
print(TempUnit.CELSIUS.name) # CELSIUS
print(TempUnit.CELSIUS.value) # celsius

Для целочисленных значений можно использовать auto() для автоматической нумерации:
from enum import Enum, auto

class Weekday(Enum):
SUNDAY = auto()
MONDAY = auto()
TUESDAY = auto()
WEDNESDAY = auto()
THURSDAY = auto()
FRIDAY = auto()
SATURDAY = auto()

🟠 Строковые перечисления

Для строковых значений можно использовать StrEnum:
from enum import StrEnum

class TempUnit(StrEnum):
CELSIUS = "celsius"
FAHRENHEIT = "fahrenheit"

print(TempUnit.CELSIUS.capitalize()) # Celsius

Автоматическая строковая нумерация:
from enum import StrEnum, auto

class TempUnit(StrEnum):
CELSIUS = auto()
FAHRENHEIT = auto()

assert TempUnit.CELSIUS.value == "celsius"

🟠 Специализированные типы перечислений

Целочисленные перечисления с IntEnum:
from enum import IntEnum

class SomeIntegers(IntEnum):
ONE = 1
TWO = 2
THREE = 3

print(SomeIntegers.TWO + 1) # 3

Флаги с Flag для комбинирования флагов:
from enum import Flag, auto

class NotificationMethod(Flag):
IN_APP = auto()
PUSH = auto()
EMAIL = auto()
SMS = auto()

user_settings = NotificationMethod.IN_APP | NotificationMethod.PUSH
print(user_settings) #

🟠 Утилиты для удобной работы с перечислениями

Проверка уникальности значений с помощью декоратора @unique:
from enum import Enum, unique

@unique
class EnumWithAliases(Enum):
ONE = 1
TWO = 2
THREE = 3
UNO = 1 # Ошибка, дублирующее значение

Проверка непрерывности значений с помощью декоратора @verify(CONTINUOUS):
from enum import Enum, verify, CONTINUOUS

@verify(CONTINUOUS)
class Nums(Enum):
THREE = 3
FOUR = 4
FIVE = 5
SIX = 6

@verify(CONTINUOUS)
class NumsHole(Enum):
THREE = 3
FOUR = 4
SIX = 6 # Ошибка, отсутствует 5


Библиотека питониста #буст
05/02/2025, 06:54
t.me/pyproglib/6684 Permalink
🔥 Холивар: Flask vs Django vs FastAPI

🧑‍💻 Начинающий разработчик:
«Хочу выбрать фреймворк, чтобы изучать бэкенд на Python. Что лучше начать: Flask, Django или FastAPI?»

И понеслась...

💬 Сторонники Flask:
— «Flask — идеальный для старта! Минимализм, гибкость, пишешь сам, понимаешь всё!»
— «Django за тебя всё делает — и ты ничего не учишь!»
— «Лучше понять, как работает веб, чем сразу прыгать в гигантский фреймворк!»

💬 Сторонники Django:
— «Flask — это игрушка. В продакшене нужен Django: ORM, миграции, админка, безопасность из коробки!»
— «Хочешь быстро MVP или корпоративный проект — выбирай Django!»
— «Flask хорош, пока тебе не нужно ничего, кроме "Hello, world".»

💬 Сторонники FastAPI:
— «2025 на дворе. Кто вообще ещё пишет на Flask? FastAPI — быстрее, моднее, асинхронно!»
— «Типизация, Pydantic, OpenAPI, автогенерация документации — это просто магия!»
— «Flask — это прошлый век. Django — тяжелый монолит. FastAPI — идеальный баланс!»

⚖️ А где правда?
💬 Комменты открыты. Аргументируй, но не кричи (или кричи, это же холивар).
P.S. Инструкция, как оставить коммент

❤️ — Flask: минимализм и контроль
🔥 — Django: всё включено
👍 — FastAPI: скорость, типы, будущее
😁 — Никакой. Я пишу на Go

Библиотека питониста #междусобойчик
05/01/2025, 18:08
t.me/pyproglib/6683 Permalink
🐍 Python 3.15 — расписание релиза (PEP 790)

📅 Этапы разработки:
— Начало разработки: 6 мая 2025

— Альфа-релизы:
📝 Alpha 1: 14 октября 2025
📝 Alpha 2: 18 ноября 2025
📝 Alpha 3: 16 декабря 2025
📝 Alpha 4: 13 января 2026
📝 Alpha 5: 10 февраля 2026
📝 Alpha 6: 10 марта 2026
📝 Alpha 7: 7 апреля 2026

— Бета-релизы (без добавления новых фич):
📝 Beta 1: 5 мая 2026
📝 Beta 2: 26 мая 2026
📝 Beta 3: 16 июня 2026
📝 Beta 4: 14 июля 2026

— Release candidates:
📝 RC1: 28 июля 2026
📝 RC2: 1 сентября 2026

— Финальный релиз: 1 октября 2026 (четверг)

🔧 Срок поддержки:
📝 Bugfix-обновления: каждые ~2 месяца в течение 2 лет (до выхода Python 3.18.0 final)
📝 Обновления безопасности (только исходный код): ещё 3 года — до октября 2031

Библиотека питониста #свежак
05/01/2025, 14:01
t.me/pyproglib/6682 Permalink
🤯 Как простая задачка поставила в тупик программистов

На собеседовании задали простой вопрос:
«В мешке числа от 1 до 100. Одно пропало. Как найти его? А если пропали два числа? Три? Или вообще k чисел?»

Эта задачка превратилась в одно из самых обсуждаемых тем на Stack Overflow.

➡️ Что внутри статьи:
— Как найти 1 пропущенное число (формула + код).
— Как находить 2 и больше пропущенных чисел (оптимальные алгоритмы).
— Алгоритм Мински–Трахтенберга–Зиппеля.
— Симметрические многочлены и тождества Ньютона (и зачем они нужны).
— Примеры кода на Python для всех случаев.

Если хочешь понять, как красиво решать задачи уровня собесов — обязательно прочитай статью.

👉 Переходи к статье

🔵 Чтобы получить оффер-мечты в Data Science, забирайте наш курс → «Математика для Data Science»

Proglib Academy #буст
05/01/2025, 10:43
t.me/pyproglib/6681 Permalink
⌨️ Как адаптировать код под синтаксические изменения в Python 3.14

Python 3.14 планируется к релизу 7 октября 2025 года. В нем будут представлены значительные улучшения производительности, включая новый экспериментальный интерпретатор и оптимизацию различных встроенных модулей.

Кроме того, Python 3.14 вводит несколько изменений синтаксиса, которые важно учитывать разработчикам:

1⃣ Запрещены операторы управления потоком в блоках `finally`

Сейчас разработчики могут по ошибке использовать операторы управления потоком (такие как return, break или continue) в блоках finally, что может привести к неожиданному поведению. В Python 3.14 будет выводиться SyntaxWarning при наличии таких операторов в блоках finally.

Пример:
def return_example():
try:
print("В блоке try")
return "Возврат из блока try"
except Exception as e:
print(f"Ошибка: {e}")
finally:
print("В блоке finally")
return "Возврат из блока finally" # Перекрывает возврат из try

result = return_example()
print(f"Результат: {result}")

Вывод:
В блоке try
В блоке finally
Результат: Возврат из блока finally

Это изменение поможет избежать ошибок, когда контрольный поток блока finally перезаписывает поток из блоков try/except.

2⃣ Обработка исключений без скобок

В Python 3.14 больше не требуется использовать скобки при перехвате нескольких исключений. Это упрощает код, но скобки всё равно необходимы, если вы используете конструкцию as для захвата экземпляра исключения.

Пример:
def divide(a, b):
try:
result = a / b
return result
except ZeroDivisionError, TypeError: # Обработка без скобок
print(f"Неправильный ввод: {a} и {b}")
raise

Однако если вы захватываете экземпляр исключения, скобки всё равно требуются:
def divide(a, b):
try:
result = a / b
return result
except (ZeroDivisionError, TypeError) as e:
print(f"Ошибка: {e}")
raise e

Хотя это обновление и незначительное, оно упрощает код при работе с несколькими исключениями.

3⃣ Отложенная оценка аннотаций типов

В предыдущих версиях Python ссылаться на класс в аннотациях типов до того, как он был полностью определён, приводило к ошибке NameError. Разработчики должны были использовать строковые литералы или импортировать __future__, чтобы избежать этой проблемы. В Python 3.14 аннотации типов теперь оцениваются только по мере необходимости.

Пример (до Python 3.14):
class Node:
def __init__(self, value: int, next: Node): # Ошибка NameError
self.value = value
self.next = next

Теперь в Python 3.14 нет необходимости в специальных импортируемых модулях или строковых аннотациях:
class Node:
def __init__(self, value: int, next: Node): # Работает без ошибок
self.value = value
self.next = next

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

Библиотека питониста #буст
05/01/2025, 06:58
t.me/pyproglib/6680 Permalink
Библиотека питониста #развлекалово
04/30/2025, 18:12
t.me/pyproglib/6679 Permalink
📱 Новый ассистент Python-разработки — всего один промпт

Промпт, который превратит ChatGPT в полноценного помощника при решении инженерных задач, отладки и проектирования архитектуры.

✍️ Промпт:
Act as a senior Python developer.

I will describe a project or task I'm working on. You will ask clarifying questions if needed, then help me:
— design clean architecture,
— identify edge cases,
— suggest libraries, tools, and testing strategies,
— write well-structured, production-ready code.

Please explain your reasoning and best practices throughout. Wait for my input before continuing to the next step.

▫️ Как это работает:
— Вы получаете не просто код, а рассуждения и советы от «синьора»
— Промпт подстраивается под вашу задачу — от pet-проектов до боевых сервисов
— Подходит и для обучения, и для повышения качества решений в работе

▫️ Примеры использования:
— Решаете нетривиальную задачу и хотите second opinion
— Не уверены в архитектуре или выборе инструментов
— Хотите прокачать подход к разработке на уровне профессионала

Библиотека питониста #буст
04/30/2025, 07:09
t.me/pyproglib/6678 Permalink
🐍✨ Пиши как профи: 10 Python-лайфхаков для новичков

Лайфхаки от разработчиков, обжёгшихся до вас

➡️ Что вас ждет внутри:
— почему if x == True: — это преступление
— как списковые включения экономят часы
— зачем линтер важнее кофе
— и почему def func(start_list=[]) может испортить тебе вечер
— как не сойти с ума от зависимостей (и что делать с виртуальными окружениями)
— секретный power move: dir(), help() и другие встроенные суперсилы

И всё это без занудства и «книг для чайников». Просто, по делу, с примерами и личным опытом от бывалых питонистов

📎 Статья

🔵 Начинайте свой путь в программировании и прокачивайте свои навыки с нашим курсом «Основы программирования на Python»

Proglib Academy #буст
04/29/2025, 18:15
t.me/pyproglib/6677 Permalink
🔥 IT Breaking Memes — 30 000 ₽ за самую смешную IT-новость

Библиотека программиста запускает конкурс, который взорвет вашу ленту: создайте самую смешную альтернативную версию реальной IT-новости!

👾 Правила просты:
1. Берете настоящую новость из мира технологий.
2. Переписываете ее так, чтобы смеялись все.
3. Получаете деньги и славу.

🏆 Призы:
- 1 место: 30 000 ₽ + статус ведущего нового юмористического IT-канала
- 2 и 3 место: по 5 000 ₽ + вечный почет в IT-сообществе

Пример:
Реальная новость: «Гугл создала модель для общения с дельфинами».

Смешная альтернатива: «Нейросеть от Гугл обрабатывает видеопоток с камеры в свинарнике. ИИ следит, сколько свинья находится возле кормушки, не отталкивают ли ее собратья. Недокормленных докармливают, а переевшие пропускают следующую кормешку».

📅 Сроки: с 29 апреля по 11 мая включительно

Для участия отправьте свою смешную новость в гугл-форму: https://forms.gle/6YShjgfiycfJ53LX8

Ждем ваших новостей!
04/29/2025, 13:01
t.me/pyproglib/6675 Permalink
Инструмент недели: планирование задач с Rocketry

Rocketry — это фреймворк для планирования задач в Python, который позволяет легко управлять задачами и их выполнением с помощью простых выражений.

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

1⃣ Установите Rocketry

Для начала установите Rocketry с помощью pip:
pip install rocketry

2⃣ Напишите первый планировщик задач

Создайте файл, например, scheduler.py, и добавьте в него следующий код:
from rocketry import Rocketry
from rocketry.conds import daily

app = Rocketry()

@app.task(daily)
def do_daily():
print("Эта задача выполняется каждый день!")

if __name__ == '__main__':
app.run()

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

3⃣ Запуск задач

После написания кода запустите его с помощью Python:
python scheduler.py

Теперь ваша задача будет выполняться каждый день.

4⃣ Настройка различных условий

Rocketry позволяет настраивать задачи с использованием различных условий.

▶️ Задача, выполняющаяся каждые 10 секунд:
@app.task(every("10 seconds"))
def do_continuously():
print("Эта задача выполняется каждую секунду!")

▶️ Задача, выполняющаяся каждый день после 7:00:
@app.task(daily.after("07:00"))
def do_daily_after_seven():
print("Эта задача выполняется каждый день после 7:00!")

▶️ Задача, выполняющаяся каждый час между 22:00 и 06:00:
@app.task(hourly & time_of_day.between("22:00", "06:00"))
def do_hourly_at_night():
print("Эта задача выполняется каждый час ночью!")

▶️ Задача, выполняющаяся по cron-выражению:
@app.task(cron("* 2 * * *"))
def do_based_on_cron():
print("Эта задача выполняется по cron-выражению!")

5⃣ Пайплайнинг задач

Rocketry поддерживает пайплайнинг задач — передача данных между задачами:
from rocketry.conds import daily, after_success
from rocketry.args import Return

@app.task(daily.after("07:00"))
def do_first():
return 'Hello World'

@app.task(after_success(do_first))
def do_second(arg=Return('do_first')):
print(f"Задача 'do_first' вернула: {arg}")
return 'Hello Python'

6⃣ Параллельное выполнение задач

Rocketry поддерживает выполнение задач в разных режимах: синхронно, асинхронно, в отдельных потоках и процессах:
@app.task(daily, execution="main")
def do_unparallel():
print("Эта задача выполняется синхронно.")

@app.task(daily, execution="async")
async def do_async():
print("Эта задача выполняется асинхронно.")

@app.task(daily, execution="thread")
def do_on_separate_thread():
print("Эта задача выполняется в отдельном потоке.")

@app.task(daily, execution="process")
def do_on_separate_process():
print("Эта задача выполняется в отдельном процессе.")

▶️ С помощью Rocketry вы можете автоматизировать задачи с минимальными усилиями, будь то для небольших проектов или для масштабных приложений.

Библиотека питониста #буст
04/29/2025, 06:53
t.me/pyproglib/6674 Permalink
☀️ IT-календарь: главные релизы и события мая

📅 Важные релизы:

Python 3.14 Beta 1
Ожидаемая дата: 6 мая 2025 года
Это важный этап разработки: после выхода беты новые функции замораживаются, а основное внимание переключается на тестирование и исправление ошибок.

Python 3.13.4
Ожидаемая дата: вероятно, середина месяца
Релиз будет включать исправления багов и обновления безопасности в рамках регулярного двухмесячного цикла.

🌟 Ключевые мероприятия:

PyCon US 2025 (PyCon US)
Даты проведения: 15–23 мая 2025 года
Место: Питтсбург, США
Крупнейшая конференция Python в США, объединяющая доклады, мастер-классы, хакатоны, ярмарку вакансий (Job Fair), аукцион PyLadies и другие мероприятия для разработчиков всех уровней.

PyCon Italia 2025 (PyCon Italia)
Даты проведения: 28–31 мая 2025 года
Место: Болонья, Италия
Конференция Python в Италии с насыщенной программой: доклады, мастер-классы и социальные мероприятия — PyDrinks, PyDinner и PyFest.

Библиотека питониста #свежак
04/28/2025, 18:40
t.me/pyproglib/6673 Permalink
⌨️ Топ-вакансий для питонистов за неделю

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

Senior Python Developer (KernelCare), удалёнка

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

Python Developer — от 220 000 ₽, удалёнка

Junior Python developer — от 100 000 до 130 000 ₽, офис (Москва)

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

Библиотека питониста
04/28/2025, 10:49
t.me/pyproglib/6672 Permalink
Релиз pip 25.1: установка групп зависимостей и вывод lock-файлов

На выходных вышел pip 25.1.

Главные новшества:
➡️ Теперь можно устанавливать группы зависимостей, например:
pip install --group test

➡️ Добавлена экспериментальная поддержка вывода lock-файлов по стандарту PEP 751:
pip lock requests -o -

Полный список изменений получился внушительным. Один из мейнтейнеров подготовил краткий обзор:
👉 Что нового в pip 25.1

Полный changelog можно посмотреть здесь:
👉 Changelog pip 25.1

Библиотека питониста #свежак
04/28/2025, 08:59
t.me/pyproglib/6671 Permalink
Есть ли в Python сборщик мусора, и, если есть, как он работает?

Стандартный интерпретатор использует несколько алгоритмов.

🧹 Подсчёт ссылок. Каждый объект в Python содержит внутренний счётчик ссылок. Когда он падает до нуля, это означает, что на объект больше нет ссылок, его можно удалить. Главный недостаток этого алгоритма — не умеет определять циклические ссылки.
🧹 Алгоритм поиска циклов. Реализован в модуле gc и активируется время от времени, а не постоянно. Если коротко, этот алгоритм периодически ищет объекты, которые ссылаются только друг на друга и не доступны извне. Объекты, признанные недостижимыми, удаляются.
Также стоит добавить, что циклический сборщик мусора делит объекты на три поколения в зависимости от того, как долго они существуют в памяти. Новые объекты помещаются в первое поколение. Если они сохраняются после очередного процесса сбора мусора, то перемещаются в следующее по старшинству поколение. Объекты в более старших поколениях проверяются реже.
04/28/2025, 07:05
t.me/pyproglib/6670 Permalink
📱 Python новости

🚀 Релизы и инструменты:
T-строки официально в Python 3.14 — новый стандарт форматирования строк
ViperView — визуализатор pip-пакетов — смотрим зависимости проекта наглядно
PyUiBuilder — drag-and-drop конструктор GUI на Python (tkinter и customtk)
Bootstrapping Python-проектов с Copier — автоматизация шаблонов, uv и GitHub Actions

👍 Советы:
Год с uv — плюсы, минусы и стоит ли переходить — опыт использования альтернативы pip+venv
Python на скорости Rust — как добиться скорости C-подобного уровня
Введение в MLflow: настройка и запуск — быстрый старт для трекинга экспериментов

🧪 Разработка и производительность:
Все декораторы в Python — за 9 минут видео — компактное и наглядное объяснение
Асинхронная обработка запросов в Python: мода или необходимость — разбор реальных кейсов
Разработка своей системы планирования задач на Python — проект от идеи до реализации
Мини текстовая RPG-игра на Python — отличный проект для практики

🌐 Django и веб:
Django внедряет новую систему трекинга фич на GitHub — прозрачность и участие в разработке
Maps with Django: GeoDjango, Pillow и GPS — создание веб-карт с данными из фотографий
Введение в тестирование Flask-приложений — маршруты, БД и мокирование с pytest

🛠 Тестирование и автоматизация:
UI автотесты на Python с PageObject и CI/CD — практика с Allure-отчётами

Библиотека питониста #свежак
04/27/2025, 11:49
t.me/pyproglib/6669 Permalink
🧠⚡️👟 Странные, но эффективные лайфхаки для продуктивности

Иногда самые действенные способы повысить продуктивность звучат как полный бред. Но это работает! Пользователи Reddit делятся своими «тупо-звучащими-но-реально-помогающими» секретами, которые помогут тебе наконец-то перестать прокрастинировать и начать делать дела.

ТОП-советы от пользователей Reddit — в нашей статье.

🐸 Библиотека программиста
04/27/2025, 10:41
t.me/pyproglib/6668 Permalink
💭 Холивар: нужен ли ООП Python-разработчику?

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

На код-ревью сеньор разнёс его в пух и прах: «Где ООП? Без классов и объектов это не код, а любительщина, переделывай».

Джун ответил: «Мой скрипт решает задачу, он понятный и быстрый. Зачем ООП для 150 строк?»

Сеньор был непреклонен, и дедлайн сорвался.

Что думаете? Пишете ли вы на Python с ООП или предпочитаете обходиться без него?
Го в комменты, разожжём холивар! 👇

❤️ Команда «ООП — необходимость»: «ООП — это основа качественного кода! Классы, наследование, инкапсуляция — без них проект превращается в хаос. ООП — это про командную работу и долгосрочные проекты.»

👍 Команда «Простота превыше»: «Python создан для ясности! Функции, списки, модули — этого хватает для большинства задач. ООП часто усложняет код без нужды.»

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

Библиотека питониста #междусобойчик
04/26/2025, 12:52
t.me/pyproglib/6667 Permalink
Главное — успеть убежать 🤣

Библиотека питониста #междусобойчик
04/26/2025, 08:53
t.me/pyproglib/6666 Permalink
🚫💻 Топ-10 ошибок эволюции интернета: что бы разработчики удалили из современного веба

Сегодняшний интернет — это не только мемы и котики, но и автозапуск видео, всплывающие окна, перегруженный JavaScript, странные архитектурные решения прошлого.

В статье разбираем:

➡️ Какие элементы веба вызывают наибольшую боль у разработчиков

➡️ Почему соцсети, реклама и куки заслуживают изгнания

➡️ Как ошибки типа referer и злоупотребление WordPress превратились в технический долг

➡️ Что бы изменили в JavaScript, если бы можно было откатить всё назад

➡️ Идеи для нового, более логичного и безопасного интернета

Мечты о «перезапуске» веба с чистого листа — это не фантастика, а повод задуматься: а не пора ли нам пересмотреть старые решения?

🔗 Читаем статью по ссылке

🐸 Библиотека фронтендера
04/25/2025, 17:53
t.me/pyproglib/6664 Permalink
🎯 Команда дня: `@overload` в Python

@overload из модуля typing позволяет указать несколько сигнатур для одной функции. Это особенно полезно, когда возвращаемый тип зависит от аргументов — и вы хотите, чтобы типизация отражала это поведение.

Пример:
from typing import Literal, overload

@overload
def transform(data: str, mode: Literal["split"]) -> list[str]: ...
@overload
def transform(data: str, mode: Literal["upper"]) -> str: ...

def transform(data: str, mode: Literal["split", "upper"]) -> list[str] | str:
return data.split() if mode == "split" else data.upper()

— transform(..., "split") → list[str]
— transform(..., "upper") → str
— Типизация подскажет ошибку, если вы вызовете append() у строки или .lower() у списка

Другой кейс — когда нужен только один аргумент из двух:
@overload
def get_user(id: int = ..., username: None = None) -> User: ...
@overload
def get_user(id: None = None, username: str = ...) -> User: ...

def get_user(id: int | None = None, username: str | None = None) -> User: ...

Так можно добиться:
✅ get_user(id=1)
✅ get_user(username="John")
🙅‍♂️ get_user(id=1, username="John") — не соответствует ни одной сигнатуре

Бонус: Literal позволяет ограничить значения аргументов строками:
def set_color(color: Literal["red", "blue", "green"]) -> None: ...

▶️Попытка передать yellow вызовет ошибку ещё до выполнения кода.

▶️ @overload и Literal — мощные инструменты статической проверки, особенно в больших проектах, где важна точная типизация.

Библиотека питониста #буст
04/25/2025, 09:49
t.me/pyproglib/6663 Permalink
💃 Как языки программирования выглядят в стиле Гибли

Мы не могли пройти мимо нашумевшего тренда и попросили ИИ перенести Python во вселенную Миядзаки.

Как вам образ? Расскажите в комментариях ↓

😜 Еще больше персонажей из мира айти в стиле Гибли — в нашем канале @proglib
04/25/2025, 08:03
t.me/pyproglib/6662 Permalink
😡 Лучшие материалы по Python в одной подборке

Собрали топовые материалы, которые наши подписчики сохраняют чаще всего.

Эту подборку мы будем регулярно пополнять, поэтому сохраняйте тонну пользы, чтобы не потерять!

1. uv — новый стандарт в управлении Python-проектами и пакетами

2. Бесплатный курс по фулстек-разработке — реальность

3. Интерактивная карта Python‑пакетов PyPI

4. Устали от хаоса в JSON?

5. Автоматизация с Python: от рутинных задач до DevOps

6. Poetry vs UV: какой менеджер пакетов лучше для Python?

7. Чистый код на Python
04/24/2025, 18:04
t.me/pyproglib/6661 Permalink
📈 Как «ленивая разработка» захватывает IT-рынок

Пока мы выстраиваем архитектуру, пишем тесты и спорим о лучших практиках, рынок всё активнее обживают те, кто вообще не пишет код. Low-code и no-code решения не просто живы — они становятся нормой для бизнеса.

Порог входа минимальный, скорость разработки — бешеная, а заказчику всё равно, написано ли это на Java или накликано в визуальном редакторе. Вопрос: как долго останется актуальной классическая разработка?

🔗 Подробнее в статье

🐸 Библиотека джависта
04/24/2025, 10:19
t.me/pyproglib/6660 Permalink
🎬 Все декораторы в Python — за 9 минут

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

💡 Что вы узнаете:
— Что такое декораторы в Python
— Как использовать @staticmethod, @classmethod и @property
— Как создавать собственные декораторы, чтобы упростить архитектуру кода

📌 Основные моменты:
0:00 — Введение и понятие декораторов
3:11 — Все встроенные декораторы Python

🔗 Ссылка на видео: https://clc.to/dBNl5Q

Библиотека питониста #буст
04/24/2025, 07:43
t.me/pyproglib/6659 Permalink
Всегда так 💯

Библиотека питониста
#развлекалово
04/23/2025, 17:53
t.me/pyproglib/6658 Permalink
Когда сроки горят, а разработчиков не хватает

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

Решение проблемы — задействовать дополнительные ресурсы на аутсорсе или аутстаффе. Например, обратиться в Proglib. Да-да, мы запустили свою студию веб-разработки!

Что мы предлагаем:

• Опытные специалисты для аутстаффа (frontend, backend, DevOps, UI/UX, PM, BA) 

• Полноценная разработка проектов под ключ 

• Гибкое масштабирование команды под потребности клиента 

• Прозрачная коммуникация и регулярная отчетность

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

Заполните форму, чтобы ускорить свою разработку 👉 https://forms.yandex.ru/u/67e548a4eb614622efa0bcb2/
04/23/2025, 11:01
t.me/pyproglib/6657 Permalink
🧰 Инструмент недели: ViperView — визуализатор pip-пакетов

Если вы хотите лучше понять, какие библиотеки занимают место в вашем Python-окружении — попробуйте ViperView. Это простое и удобное десктопное приложение с графическим интерфейсом на PyQt5.

✅ Возможности:
• Отображение всех установленных pip-пакетов: версия, размер и путь
• Интерактивная диаграмма с 20 самыми «тяжёлыми» библиотеками
• Поиск и фильтрация в реальном времени
• Экспорт информации в CSV

↗️ ViperView поможет вам наглядно оценить структуру окружения и освободить место, если нужно.

🔗 Репозиторий инструмента: https://clc.to/Jl4t3g

Библиотека питониста #буст
04/23/2025, 06:53
t.me/pyproglib/6656 Permalink
💻 Как ускорить выполнение запросов к базе данных в Django

Когда Django-запросы вытягивают из базы больше данных, чем нужно, это тормозит работу приложения. Чтобы ускорить выполнение и уменьшить нагрузку, можно использовать методы:

〰️ defer() — откладывает загрузку указанных полей до их фактического использования
〰️ only() — загружает только указанные поля, остальные — по запросу
〰️ exclude() — фильтрует объекты, исключая ненужные

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

🔗 Подробнее в статье: https://proglib.io/sh/2vagPRorTU

Библиотека питониста
04/22/2025, 17:56
t.me/pyproglib/6655 Permalink
Async-инициализация в Python: какие есть подходы

В Python нет нативной поддержки асинхронного __init__, поэтому приходится искать обходные пути, если объект требует асинхронной инициализации (например, получения ресурса через await get_resource()).

⬇️ Вот какие стратегии чаще всего используют — с плюсами и минусами.

1️⃣ @classmethod async def initialize()
class Klass:
def __init__(self, resource):
self.resource = resource

@classmethod
async def initialize(cls):
resource = await get_resource()
return cls(resource)

🌥 Плюсы:
— Лаконично
— Хорошо отделяет sync и async логику
— Удобно для тестов

🌥 Минусы:
— Нет устоявшейся конвенции
— Может быть неочевидно для команды

🌥 Подходит для простых случаев без необходимости в очистке ресурсов.

2️⃣ Асинхронный контекстный менеджер (__aenter__ / __aexit__)
class Klass:
async def __aenter__(self):
self.resource = await get_resource()
return self

async def __aexit__(self, exc_type, exc, tb):
pass

🌥 Плюсы:
— Устоявшийся паттерн (async with)
— Удобно добавлять логику очистки в будущем

🌥 Минусы:
— Нужно писать async with при каждом использовании
— Не всегда удобно, если объект нужен за пределами контекста

🌥 Подходит, если нужно управлять жизненным циклом ресурса.

3️⃣ Инициализация в фоне через create_task()
class Klass:
def __init__(self):
self.ready_event = asyncio.Event()
asyncio.create_task(self._load())

async def _load(self):
self.resource = await get_resource()
self.ready_event.set()

async def use(self):
await self.ready_event.wait()
await do_something_with(self.resource)

🌥 Плюсы:
— Можно запускать загрузку параллельно с другими задачами
— Подходит для высоконагруженных систем

🌥 Минусы:
— Сложнее в отладке
— Нужно явно проверять await ready_event.wait() — легко забыть
— Нет встроенного механизма очистки

🌥 Хорошо подходит для внутренних компонентов или фреймворков, где поведение контролируется централизованно.

4️⃣ Внешний async-фабричный метод / билдер

Просто выносим всю асинхронную инициализацию за пределы класса.

🌥 Плюсы:
— Чистый и легко тестируемый код
— Гибко масштабируется

🌥 Минусы:
— Логика разнесена по разным местам
— Использование может стать чуть более многословным

🌥 Идеально, если важна читаемость и разделение ответственности.

5️⃣ await instance.ready()

Гибридный подход: конструктор sync, а использование — с явной асинхронной инициализацией.
klass = Klass()
await klass.ready()

🌥 Позволяет разделить создание и инициализацию, сохраняя контроль над потоком.

6️⃣ Запрет обычного __init__, только async-конструктор
class Klass:
def __new__(cls, *args, **kwargs):
raise RuntimeError("Используйте `await Klass.create()`")

@classmethod
async def create(cls):
self = super().__new__(cls)
self.resource = await get_resource()
return self

🌥 Форсирует корректное использование через async-интерфейс.

▫️ Какой подход выбрать:
🤖 initialize() — простая async-инициализация без очистки
🤖 __aenter__/__aexit__ — нужна очистка или сложный жизненный цикл
🤖 create_task() + Event — нужно запускать инициализацию в фоне
🤖 Async factory — тестируемость, масштабируемость
🤖 .ready() — чистое разделение этапов
🤖 __new__ + async — строгий контроль над созданием

Библиотека питониста #буст
04/22/2025, 06:52
t.me/pyproglib/6654 Permalink
⌨️ Топ-вакансий для питонистов за неделю

Senior Python Developer (Blockchain) — от 3500 до 4500 $, удалённо

Руководитель группы разработки Python — от 350 000 до 550 000 ₽, удалённо

Python developer (DDI) — от 250 000 ₽, гибрид (Москва)

Tech Lead Python — от 350 000 ₽, удалённо

Junior Python Developer — от 130 000 до 300 000 ₽, удалённо

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

Библиотека питониста
04/21/2025, 17:53
t.me/pyproglib/6653 Permalink
🎉 T-строки официально в Python 3.14

В конце 2025 года нас ждёт мощное пополнение — в Python появятся template strings (t-strings). Это новая форма строк, которая решает старые проблемы f-строк и открывает дверь к более безопасной и гибкой работе с текстом.

🎌 Что такое t-строки

С f-строками (f"...") мы живём с 2016 года — они удобные, но иногда… опасные. Например:
f"SELECT * FROM users WHERE name = '{user_name}'"

🔎 Такой код легко подставляет вредоносный ввод — и привет, SQL-инъекция или XSS.

Теперь появляется альтернатива: t-строки. Они выглядят похоже:
from string.templatelib import Template
template = t"Hello {name}!"

🔎 Но — они не превращаются сразу в строку, а становятся объектом Template. Их нужно явно обработать, и это даёт пространство для экранирования, валидации и любых безопасных преобразований.

🎌 Безопасный HTML

Пример: экранирование HTML-ввода
evil = ""
template = t"

{evil}

"
safe = html(template)
assert safe == "

<script>alert('bad')</script>

"

🔎 Больше никакой грязи в шаблоне. А ещё html() может возвращать полноценный HTMLElement, а не просто строку. Всё гибко.

🎌 Как работать с t-strings

Шаблон предоставляет доступ к строкам и значениям до их объединения. Свойства .strings и .values возвращают кортежи:
name = "World"
template = t"Hello {name}!"
assert template.strings == ("Hello ", "!")
assert template.values == (name,)

Всегда будет на одну строку больше, чем значений. Например:
t"".strings == ("",)
t"{name}".strings == ("", "")

Можно просто пройтись по шаблону в цикле:
template = t"Hello {name}!"
contents = list(template)
assert contents[0] == "Hello "
assert contents[1].value == name
assert contents[2] == "!"

Для продвинутой обработки можно получить данные о каждой интерполяции:
template = t"Hello {name!s:>8}!"
interp = template.interpolations[0]
assert interp.value == name
assert interp.expression == "name"
assert interp.conversion == "s"
assert interp.format_spec == ">8"

Можно создать шаблон напрямую:
from string.templatelib import Template, Interpolation
template = Template(
"Hello ",
Interpolation(value="World", expression="name"),
"!"
)

T-строки — это:
✔️ Безопасность для HTML, SQL и Markdown
✔️ Возможность сложной обработки шаблонов
✔️ Гибкость: можно возвращать любой тип, а не только строку

🔎 Очень хочется, чтобы форматтеры типа black и ruff поддержали t-строки, а VS Code начал подсвечивать их содержимое. Потому что t-strings — это не просто новая игрушка, а основа для более безопасного Python-кода.

Библиотека питониста #свежак
04/21/2025, 12:16
t.me/pyproglib/6652 Permalink
🔥 Завтра запускаем ML-ракету: последние места на борту

Уже завтра, 21 апреля, состоится наш воркшоп «Математика машинного обучения на практике», где теория ML превращается в практические навыки.

Что вас ждет:
📍 Работа с реальными данными — табличные датасеты и изображения
📍 Снижение размерности через PCA — научитесь отделять важное от второстепенного
📍 Обучение моделей — Random Forest и градиентный бустинг в действии
📍 Разбор метрик и гиперпараметров — как настроить модель на максимальную эффективность
📍 Написание кода на Python — прямо как реальных проектах
📍 Персональный code review от эксперта — бесценный фидбек для вашего роста
📍 Доступ в закрытый чат участников — нетворкинг и обмен опытом

Кто проводит воркшоп:

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

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

👉 Забронировать место на воркшопе: https://proglib.io/w/6f0e5775
04/20/2025, 15:04
t.me/pyproglib/6649 Permalink
📱 Python новости

🚀 Релизы и инструменты:
Шесть релизов Python за один день — весна 2025-го врывается с размахом
TARIFF — «величайший» Python-пакет

🧠 Профессия и карьера:
Python остаётся топ-навыком для AI-вакансий — по данным AI Index 2025

🧪 Разработка и производительность:
Примитивный компилятор на Python — учебный проект с нуля
CPU-кеш и Python — может ли кеширование ускорить ваш код

🌐 Django и веб:
F(), Func() и никаких циклов — как Django пишет SQL под капотом
Django Simple Deploy + DevOps — обсуждаем в подкасте
Go vs Python для веб-скрейпинга — сравнение инструментов

🎥 Видео:
Data Engineering + AI/LLMs — видео-урок по загрузке данных

Библиотека питониста #свежак
04/20/2025, 12:53
t.me/pyproglib/6648 Permalink
📚Напоминаем про наш полный курс «Самоучитель по 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
04/19/2025, 20:01
t.me/pyproglib/6647 Permalink
Самые догадливые, пишите ответ в комментах 👇

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

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

Библиотека питониста #междусобойчик
04/19/2025, 12:56
t.me/pyproglib/6646 Permalink
Наглядно 😆

Библиотека питониста #развлекалово
04/19/2025, 08:52
t.me/pyproglib/6645 Permalink
❓ Зачем дата-сайентисту дисперсия

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

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

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

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

Библиотека дата-сайентиста
04/18/2025, 17:52
t.me/pyproglib/6644 Permalink
⚙️ Фишка инструмента: 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

Библиотека питониста #буст
04/18/2025, 06:52
t.me/pyproglib/6643 Permalink
🖥 Чтение или эффективность: что важнее при написании кода

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

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

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

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

Библиотека питониста #междусобойчик
04/17/2025, 17:52
t.me/pyproglib/6642 Permalink
🚀 Приручи алгоритмы: из формул в код за один воркшоп

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

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

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

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

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

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

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

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

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

➡️ Записаться на воркшоп: https://proglib.io/w/6f0e5775
04/17/2025, 15:00
t.me/pyproglib/6641 Permalink
💰 Промпт, который поможет построить карьеру 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 или архитекторы
— Понять, какие активности на работе и вне её помогут выделиться и расти быстрее

Библиотека питониста #буст
04/17/2025, 06:53
t.me/pyproglib/6640 Permalink
04/16/2025, 17:52
t.me/pyproglib/6638 Permalink
😆 Будем честны, все мы хоть раз были на YouTube-канале индуса, который обещал сделать сайт за 5 минут, но 40 минут объяснял, как установить Python.

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

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

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

Библиотека питониста #развлекалово
04/16/2025, 17:52
t.me/pyproglib/6639 Permalink
✔️ Лучшие практики импорта модулей в 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. Убедитесь, что она установлена.")

Библиотека питониста #буст
04/16/2025, 06:54
t.me/pyproglib/6637 Permalink
➕ От многомерности к сути: чему нас учит PCA

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

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

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

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

Библиотека питониста
04/15/2025, 17:52
t.me/pyproglib/6636 Permalink
👩‍💻 Docker - лучший обучающий канал по Devops.

С помощью картинок и коротких видео даже новички начнут применять продвинутые инструменты разработки и использовать Docker.

Стоит подписаться: t.me/DevopsDocker
04/15/2025, 15:10
t.me/pyproglib/6633 Permalink
👩‍💻 Docker - лучший обучающий канал по Devops.

С помощью картинок и коротких видео даже новички начнут применять продвинутые инструменты разработки и использовать Docker.

Стоит подписаться: t.me/DevopsDocker

Реклама. ИП Хоруженко Егор Сергеевич, ИПП 550149218060. Erid 2VtzqufQb3P
04/15/2025, 15:02
t.me/pyproglib/6628 Permalink
💪 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

Библиотека питониста #свежак
04/15/2025, 13:31
t.me/pyproglib/6625 Permalink
🚩 Шпаргалка: методы словаря в Python

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

Библиотека питониста #буст
04/15/2025, 06:53
t.me/pyproglib/6624 Permalink
⌨️ Топ-вакансий для питонистов за неделю

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

Библиотека питониста
04/14/2025, 17:53
t.me/pyproglib/6623 Permalink
🙂 Раскрываем секрет собственных векторов: математическое оружие на собеседовании

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

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

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

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

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

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

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

➡️ Забронировать место на воркшопе: https://proglib.io/w/6f0e5775
04/14/2025, 13:01
t.me/pyproglib/6622 Permalink
📱 Шесть релизов 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 недель — добавляйте свои предложения

Библиотека питониста #свежак
04/14/2025, 09:59
t.me/pyproglib/6621 Permalink
🔖 Это база: секрет 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
— Поддерживаются только хешируемые аргументы

Библиотека питониста #буст
04/14/2025, 06:50
t.me/pyproglib/6620 Permalink
🐍 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 своими руками — от идеи до рабочего примера

Библиотека питониста #свежак
04/13/2025, 12:52
t.me/pyproglib/6619 Permalink
👋 Всем привет!

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

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

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

🧑‍💻 Откликнуться.
04/13/2025, 08:39
t.me/pyproglib/6618 Permalink
PEP 484 — давайте честно, типизация в Python — это как кастрюля на костре: вроде помогает, но всё равно на костре.

Тем не менее, без PEP Python был бы тем, что делает каждый «по-своему». Так что пусть будет регламент — но с чувством меры. 👌
04/12/2025, 13:39
t.me/pyproglib/6617 Permalink
😈 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 уже слишком зарегулирован?

Библиотека питониста #междусобойчик
04/12/2025, 13:31
t.me/pyproglib/6616 Permalink
👏 Набор настоящего питониста

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

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

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

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

Библиотека питониста #развлекалово
04/12/2025, 10:05
t.me/pyproglib/6615 Permalink
🆕 PEP 750 принят: шаблонные строки в Python

Этот PEP вводит в Python шаблонные строки (template strings) для гибкой работы со строками.

🟠Шаблонные строки — это обобщение f-строк: вместо префикса f используется префикс t.

🟠 В отличие от f-строк, которые сразу превращаются в обычную строку (str), t-строки возвращают объект нового типа — Template:
template: Template = t"Hello {name}"

✅ Что это даёт

Шаблонные строки предоставляют доступ к самой строке и её переменным до финальной подстановки значений. Это открывает путь к безопасной и гибкой обработке строк прямо на уровне языка.

🚩 Зачем это нужно:
— Возможность проверок безопасности (например, защита от SQL-инъекций)
— Удобство при создании веб-шаблонов
— Поддержка DSL (предметно-ориентированных языков) внутри Python
— Больше контроля над строками при их формировании

Пример:
template = t"Привет, {username}!"
print(template.fields) # ['username']
print(template.source) # 'Привет, {username}!'

Позже можно безопасно рендерить шаблон:
result = template.render(username="Алиса")

🔗 Официальный текст PEP: https://clc.to/yZ9NhA

Библиотека питониста #свежак
04/12/2025, 06:51
t.me/pyproglib/6614 Permalink
Search results are limited to 100 messages.
Some features are available to premium users only.
You need to buy subscription to use them.
Filter
Message type
Messages
Find similar avatars
Channels 0
High
Title
Subscribers
No results match your search criteria