У вас закончился пробный период!
Для полного доступа к функционалу, пожалуйста, оплатите премиум подписку
PY
Библиотека питониста | Python, Django, Flask
https://t.me/pyproglib
Возраст канала
Создан
Язык
Русский
1.93%
Вовлеченность по реакциям средняя за неделю
4.79%
Вовлеченность по просмотрам средняя за неделю

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

№5076661349

Сообщения Статистика
Репосты и цитирования
Сети публикаций
Сателлиты
Контакты
История
Топ категорий
Здесь будут отображены главные категории публикаций.
Топ упоминаний
Здесь будут отображены наиболее частые упоминания людей, организаций и мест.
Найдено 337 результатов
📱 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-отчётами

Библиотека питониста #свежак
27.04.2025, 14:49
t.me/pyproglib/6669
Репост
1
14
595
🧠⚡️👟 Странные, но эффективные лайфхаки для продуктивности

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

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

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

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

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

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

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

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

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

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

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

Библиотека питониста #развлекалово
26.04.2025, 15:52
t.me/pyproglib/6667
Главное — успеть убежать 🤣

Библиотека питониста #междусобойчик
26.04.2025, 11:53
t.me/pyproglib/6666
Репост
9
9
2.2 k
🚫💻 Топ-10 ошибок эволюции интернета: что бы разработчики удалили из современного веба

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

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

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

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

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

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

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

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

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

🐸 Библиотека фронтендера
25.04.2025, 20:53
t.me/pyproglib/6664
🎯 Команда дня: `@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 — мощные инструменты статической проверки, особенно в больших проектах, где важна точная типизация.

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

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

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

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

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

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

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

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

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

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

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

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

7. Чистый код на Python
24.04.2025, 21:04
t.me/pyproglib/6661
Репост
9
9
2.2 k
📈 Как «ленивая разработка» захватывает IT-рынок

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

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

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

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

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

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

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

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

Библиотека питониста #буст
24.04.2025, 10:43
t.me/pyproglib/6659
Всегда так 💯

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Библиотека питониста
22.04.2025, 20:56
t.me/pyproglib/6655
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 — строгий контроль над созданием

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

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

Библиотека питониста
21.04.2025, 20:53
t.me/pyproglib/6653
🎉 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-кода.

Библиотека питониста #свежак
21.04.2025, 15:16
t.me/pyproglib/6652
Репост
4
1
2.3 k
21.04.2025, 10:03
t.me/pyproglib/6650
🔥 Завтра запускаем ML-ракету: последние места на борту

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

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

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

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

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

👉 Забронировать место на воркшопе: https://proglib.io/w/6f0e5775
20.04.2025, 18:04
t.me/pyproglib/6649
📱 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 — видео-урок по загрузке данных

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

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

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

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

Библиотека питониста #развлекалово
19.04.2025, 11:52
t.me/pyproglib/6645
Репост
3
7
2.0 k
❓ Зачем дата-сайентисту дисперсия

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Стоит подписаться: t.me/DevopsDocker
15.04.2025, 18:10
t.me/pyproglib/6633
15.04.2025, 18:10
t.me/pyproglib/6632
15.04.2025, 18:10
t.me/pyproglib/6631
15.04.2025, 18:10
t.me/pyproglib/6635
15.04.2025, 18:10
t.me/pyproglib/6634
15.04.2025, 18:02
t.me/pyproglib/6627
15.04.2025, 18:02
t.me/pyproglib/6630
15.04.2025, 18:02
t.me/pyproglib/6629
15.04.2025, 18:02
t.me/pyproglib/6626
👩‍💻 Docker - лучший обучающий канал по Devops.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Библиотека питониста #развлекалово
12.04.2025, 13:05
t.me/pyproglib/6615
🆕 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

Библиотека питониста #свежак
12.04.2025, 09:51
t.me/pyproglib/6614
🖼 ТОП-5 структур данных для обработки изображений

Хотите разобраться, как обрабатывать изображения в компьютерном зрении или графике?

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

👉 В этой статье — подборка топ решений и советы, как их использовать.

Библиотека питониста
11.04.2025, 20:56
t.me/pyproglib/6613
👀 Что посмотреть: Python 3.14 и грядущие изменения

На днях вышел релиз alpha 7, а после следующего релиза (beta 1) новых фич уже не добавят. Самое время изучить, что нового принесёт Python 3.14 — и в формате видео это ещё удобнее

Темы видео:
🔎 График выхода и ключевые даты
🔎 PEP 765, PEP 648, PEP 758 — что они изменят
🔎 Улучшения производительности: JIT, NOGIL и хвостовая оптимизация
🔎 Практичные новшества и мелкие обновления

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

Библиотека питониста #буст
11.04.2025, 09:50
t.me/pyproglib/6612
✍️ Вопросы подписчиков: какие Python-проекты ценятся, если ML не интересует?

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

«Хочу создать проект, чтобы продемонстрировать навыки Python, но не через Machine Learning. Проходил курс Andrew Ng по ML — полезно, но не зацепило, не моё. Может, вернусь к ML позже, но сейчас хочется делать что-то увлекательное и практичное.

Ищу идеи для проекта, который можно добавить в резюме и обсудить на собеседовании. Но почти все советы в сети — про ML и нейросети.

Какие Python-проекты ценят работодатели, если Data Science и ML — не мой путь? Как выделиться, не погружаясь в deep learning?»

🆘 Давайте поможем:
✅ Какие не-ML проекты вы делали или видели в сильных резюме?

✅ Что привлекает рекрутеров: pet-проекты, CLI-утилиты, автоматизация?

✅ Есть идеи для open source или небольших инструментов, которые покажут Python-мастерство?

Делитесь опытом, идеями и примерами 💬

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

Библиотека питониста #междусобойчик
10.04.2025, 20:51
t.me/pyproglib/6611
🙈 Что скрывает дисперсия: разгадка секрета точных ML-моделей

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

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

• Значительно улучшить точность ваших ML-моделей

• Помочь обнаружить аномалии, которые вы раньше не замечали

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

Хотите узнать, как находить идеальный баланс в своих моделях, причем тут Random Forest и много другого о Data Science?

➡️Тогда смотрите бесплатный вебинар от Proglib: 🙈 Что скрывает дисперсия: разгадка секрета точных ML-моделей

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

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

• Значительно улучшить точность ваших ML-моделей

• Помочь обнаружить аномалии, которые вы раньше не замечали

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

Хотите узнать, как находить идеальный баланс в своих моделях, причем тут Random Forest и много другого о Data Science?

➡️Тогда смотрите бесплатный вебинар от Proglib: https://proglib.io/w/4fdac1b7
10.04.2025, 20:02
t.me/pyproglib/6610
Репост
15
9
2.1 k
🤨 ТОП-7 стран для айтишников в 2025 году

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

Что в статье:

➡️ Средняя зарплата IT-специалистов в каждой стране

➡️ Уровень налогов и наличие льгот для техсектора

➡️ Иммиграционные программы и условия въезда

➡️ Развитость IT-экосистемы и перспективы в индустрии

➡️ Плюсы и минусы жизни в каждом регионе

Если вы задумываетесь о переезде или просто хотите знать, где IT-навыки особенно ценны — самое время заглянуть в подборку 🔗
10.04.2025, 14:00
t.me/pyproglib/6609
✔️ Чек-лист: как исправить SyntaxError в Python

1⃣ Проверяем базовый синтаксис

🟢 Убедитесь, что после if, for, while, def, class есть двоеточие :
if x > 0: вместо if x > 0

🟢 Проверьте парность скобок: (), [], {}
print("Hi" → print("Hi")

🟢 Используйте правильные кавычки для строк: 'text' или "text", а не text

2⃣ Следим за ключевыми словами и операторами

🟢 Не используйте зарезервированные слова (class, return, import) как имена переменных
class = 5 → ошибка, используйте class_name

🟢Проверьте правильность операторов: == для сравнения, = для присваивания
if x = 5 → if x == 5

🟢 Не путайте : и = в словарях: {"key": "value"}, а не {"key" = "value"}

3⃣ Контролируем отступы и пробелы

🟢 Убедитесь, что отступы в блоках кода (после if, def) одинаковы (4 пробела или табуляция)
def func():
print("Ok") # Не смешивайте пробелы и табы

🟢 Избегайте лишних пробелов в именах: def my_func(), а не def my _func()

4⃣ Исправляем ошибки копирования и REPL

🟢 При копировании из REPL убирайте >>> и ....
>>> print("Hi") → print("Hi")

🟢 Добавляйте пустую строку между блоками в REPL
def greet():
print("Hi")

greet() # Нужен перенос строки перед вызовом

5⃣ Учитываем версию Python

🟢 Используйте Python 3.10+ для более понятных сообщений об ошибках
— Python 3.9: SyntaxError: invalid syntax
— Python 3.10: SyntaxError: '(' was never closed

🟢 Проверьте код на современной версии, если ошибка непонятна

6⃣ Диагностика и отладка

🟢 Читайте номер строки в ошибке, но проверяйте код выше — проблема может быть раньше

🟢 Упрощайте код, убирая части, чтобы найти источник ошибки

🟢 Используйте редактор с подсветкой синтаксиса для поиска скобок и опечаток

✅ Полезные инструменты:
— Линтеры: flake8, pylint — находят ошибки до запуска
— Редакторы: VS Code с плагином Python, PyCharm

✅ Совет

Если видите SyntaxError: invalid syntax, начните с проверки скобок, двоеточий и отступов — это решает 80% случаев.

Библиотека питониста #буст
10.04.2025, 09:55
t.me/pyproglib/6608
📢 Какой рабочий сетап круче?

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

А то, может, там уже три монитора, как у хакера из фильмов, или ноутбук на коленках, как у студента перед дедлайном?

❤️ — 1
👍 — 2
⚡️ — 3
👏 — 4
🔥 — 5
🎉 — 6
😁 — 7
😍 — 8
🤩 — 9

Библиотека питониста #развлекалово
9.04.2025, 20:51
t.me/pyproglib/6607
😇 Ошибка дня: UnboundLocalError

Сегодня разбираем одну из тех ошибок в Python, которая выглядит загадочно, но легко объяснима, если знать одну тонкость.

💥 Что произошло

1️⃣ Вы определили функцию-декоратор, всё работает:
def trigger(*fns):
def decorator(fn):
fn._next = fns

def _wrapper():
fn()
for f in fn._next:
f()
return _wrapper
return decorator

2️⃣ Затем использовали:
def step_2():
print("step 2")

def step_3():
print("step 3")

@trigger(step_2, step_3)
def step_1():
print("step 1")

step_1()

Вывод:
step 1
step 2
step 3

3️⃣ Но потом — решили переименовать переменную в цикле, чтобы она называлась так же, как и fn снаружи:
def _wrapper():
fn()
for fn in fn._next: # ❗️ shadowing
fn()

4️⃣ Результат:
UnboundLocalError: cannot access local variable 'fn' where it is not associated with a value

❓ Почему так

В Python, если переменная где-то присваивается в функции — она считается локальной на весь скоуп этой функции. Даже если вы пытаетесь её использовать до присваивания.

➡️ В примере выше: переменная fn переопределяется в цикле, а значит, Python считает, что она локальная для всей _wrapper(). Поэтому вызов fn() выше в коде — обращение к переменной, которой ещё нет, отсюда и UnboundLocalError.

На заметку:
➡️ Вложенные функции и декораторы — зона риска для shadowing
➡️ Если вы хотите использовать переменную из внешнего скоупа — не переопределяйте её имя внутри тела функции
➡️ Такие тонкости особенно актуальны при рефакторинге

✅ Как исправить

Просто не переименовывайте переменную в fn повторно. Назовите её f, next_fn, step, callback — что угодно:
for step in fn._next:
step()

💬 Вопрос к вам: какие ошибки Python вам кажутся самыми «обидными», но по факту — обучающими?

Библиотека питониста #буст
9.04.2025, 09:52
t.me/pyproglib/6606
Репост
9
16
2.1 k
😺🐙🧼 Сам себе GitHub: как работать с чистым Git-репозиторием

Git — мощная система контроля версий, которую обычно используют через платформы вроде GitHub и GitLab. Однако Git сам по себе не требует веб-интерфейсов и облачных сервисов. Многие разработчики предпочитают работать с чистым Git-репозиторием, размещенным на собственном сервере.

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

🐸 Библиотека программиста
8.04.2025, 21:03
t.me/pyproglib/6605
Питонисты!

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

➡️Поддержать канал: https://t.me/boost/pyproglib
8.04.2025, 17:30
t.me/pyproglib/6604
🧱⛏️ Чекни свой крафт: 8 признаков, что разработчик слишком залип в Minecraft

Думаешь, что твоя продуктивность падает из-за багов в коде? А может, все дело в том, что ты мысленно фармишь крипперов, пока твой PM объясняет задачу?

😎 Пройди наш тест и узнай, насколько глубоко ты провалился в пиксельную кроличью нору!

👉 Пройти тест

Библиотека питониста
8.04.2025, 14:01
t.me/pyproglib/6603
📌 How to: заменить break в Python-циклах на элегантные альтернативы

В Python break в циклах for прерывает итерацию, но часто есть более читаемые и лаконичные способы. Разберём типичные случаи и их альтернативы.

1️⃣ Проверка наличия элемента

Классика с break:
color_options = ["blue", "green", "purple"]
is_purple_an_option = False
for color in color_options:
if color == "purple":
is_purple_an_option = True
break

Альтернатива — оператор in:
is_purple_an_option = "purple" in color_options
in работает со всеми итерируемыми объектами, а для set и dict ещё и быстрее, чем цикл.

2️⃣ Проверка условия для элементов

Пример с break:
points_per_user = [3, 12, 28, 105]
anyone_has_100 = False
for points in points_per_user:
if points > 100:
anyone_has_100 = True
break

Альтернатива — any:
anyone_has_100 = any(points > 100 for points in points_per_user)
any (или all для "все элементы") делает код выразительнее.

3️⃣ Поиск первого подходящего значения

С break:
words = ["Look", "at", "these", "excellent", "words"]
first_long_word = None
for word in words:
if len(word) > 4:
first_long_word = word
break

Альтернатива — next с генератором:
long_words = (word for word in words if len(word) > 4)
first_long_word = next(long_words, None)
next берёт первый элемент из генератора, а None — значение по умолчанию, если ничего не найдено.

4️⃣ Сбор элементов до условия

С break:
items = ["chair", "desk", "", "lamp"]
before_blank = []
for item in items:
if not item:
break
before_blank.append(item)

Альтернатива — itertools.takewhile:
from itertools import takewhile
before_blank = list(takewhile(bool, items))
takewhile собирает элементы, пока условие истинно, и возвращает итератор.

📍 Итог

break полезен, но часто его можно заменить:
— in — для проверки наличия
— any/all — для условий
— next — для поиска первого значения
— takewhile — для сбора до условия

⤵️ А как вы обходитесь без break?

Библиотека питониста #буст
8.04.2025, 09:52
t.me/pyproglib/6602
⚡️ Режим агента в VS Code — теперь для всех

Режим агента (Agent mode) официально открыт для всех пользователей Visual Studio Code!

Это как напарник-программист, который сам решает задачи: копается в коде, правит файлы, запускает команды и чинит ошибки, пока всё не заработает.

⭐ Что он может:
➡️ Понимает многошаговые задачи: редактирует код, следит за ошибками компиляции/линтинга и сам их исправляет
➡️ Сам определяет, какие файлы нужно изменить — вы просто ставите задачу
➡️ Интегрируется с внешними сервисами и инструментами через MCP и расширения

⭐ Как включить:

Включить режим агента можно в Chat View, выбрав Agent в настройках chat.mode и активировав chat.agent.enabled. Если параметр не отображается — обновите VS Code до последней версии и перезапустите.

🔗 Детали обновления: https://clc.to/1lqy9g

Библиотека питониста #свежак
7.04.2025, 21:11
t.me/pyproglib/6601
Репост
161
3
2.4 k
Что выведет код сверху?

👾 — 24
👍 — 1
🥰 — 0
⚡️ — 120

Библиотека задач по Python
7.04.2025, 14:01
t.me/pyproglib/6600
Репост
10
9
2.8 k
✍🏻 Что такое wheel и eggs в Python? Какая между ними разница?

✍🏻 Python wheel — это стандартный формат установки дистрибутивов Python, который содержит все файлы и метаданные, необходимые для установки. Файл WHL также содержит информацию о версиях и платформах Python, поддерживаемых этим файлом. Расширение файла wheel — .whl

✍🏻 Python egg — это сжатый архив ZIP, содержащий исходные файлы приложения Python вместе с метаинформацией о дистрибутиве. Расширение файла egg — .egg

Основная разница заключается в том, что wheel предоставляет более простой и надежный способ установки пакетов. В отличие от eggs, он не требует установки дополнительных зависимостей и обеспечивает более быстрое время установки. Кроме того, wheel поддерживает все платформы, на которых может работать Python.

Библиотека собеса по Python
7.04.2025, 10:07
t.me/pyproglib/6599
🐍 Python новости

🚀 Релизы и инструменты:
PEP 751 принят — стандартный lockfile для менеджеров пакетов
Django 5.2 — улучшения ORM, админки и поддержка PEP 649
Dockerpyze — сборка Docker-образов из проектов на Poetry/uv
Cirron — утилита для анализа производительности Python- и Ruby-кода

🔬 Глубже в Python:
PyTorch + No-GIL Python — многопоточный инференс без GIL
Flask: тестирование API-приложений — гайд по юнит- и интеграционным тестам
slots в Python — экономим память
Sys._getframe: глубокая отладка — отладка через call stack
Настройка Copilot-контекста — как улучшить автодополнение в VS Code

📚 Обучение и лучшие практики:
ОOП в Python — подборка лучших ресурсов
Гайд по отказоустойчивым системам — принципы надёжной архитектуры
Параллелизм и асинхронность в Python — обзор ключевых концепций
CI/CD + Allure — автотесты и отчёты на пайплайне
Автоматизация пентеста — практическое руководство

📢 Cобытия:
Утечка исходников Gemini — слили часть кода от Google

Библиотека питониста #свежак
6.04.2025, 15:57
t.me/pyproglib/6598
📚Напоминаем про наш полный курс «Самоучитель по 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
5.04.2025, 23:01
t.me/pyproglib/6597
🕵️ Играем в ревью: сможете найти все 5 багов?

Быстрая проверка скиллов. В этом кусочке кода спрятаны 5 ошибок.

Цель программы: для каждого числа в списке определить, является ли оно простым (prime), и вернуть список булевых значений.

def is_prime(n):
if n <= 1:
return False

for i in range(2, n//2):
if n % i == 0:
return False
return True

def check_primes(numbers):
result = []
for num in numbers:
result.append(is_prime(num))
return result

nums = [0, 1, 2, 3, 4, 5, 10, 11, 13, 15, 17, 19]
print(check_primes(nums))

Вывод сейчас:
[False, False, True, True, True, True, False, True, True, False, True, True]

🎯 Ваша задача — найти все 5 ошибок. Пишите свои ответы в комментариях — обсудим вместе!

👀 Ответ выложу позже.

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

Библиотека питониста #развлекалово
5.04.2025, 15:52
t.me/pyproglib/6596
Лишь бы не в выходные... 😂

Библиотека питониста #развлекалово
5.04.2025, 12:02
t.me/pyproglib/6595
🆒 Собираем идеальный GUI на Python: 8 библиотек 2025 года

➡️ Tkinter — просто и по делу
➡️ PyQt — строго и функционально
➡️ Kivy — на мобилку и не только

Мы собрали лучшие библиотеки для создания графических интерфейсов на Python в 2025 — от классики до свежих решений.

🐸 Хотите красивый и удобный UI? Начните с этого списка: https://proglib.io/sh/8Z6Yl7fMgS

Библиотека питониста
4.04.2025, 21:19
t.me/pyproglib/6594
4.04.2025, 17:59
t.me/pyproglib/6593
Участвуйте в Хакатоне 1Т!

❗️Создайте алгоритм управления дронами для тушения пожаров и выиграйте до 250 000 рублей!

🕑Срок проведения: 1–25 апреля.

Приглашаем всех, кто:
⚡️Владеет технологиями ИИ
⚡️Может разрабатывать решения на Python
⚡️Готов испытать свои силы и решить интересную задачу!

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

Что вас ждет?
✅Два трека: Базовый — разработка алгоритма для одного беспилотника и Продвинутый — алгоритм для роя из пяти БВС.
✅Поддержка экспертов и крутое комьюнити.
✅Денежные призы, мерч 1Т и сертификат.

Призы
Трек Первый взлёт
1 место — 50 000 ₽
2 место — 30 000 ₽
3 место — 20 000 ₽

Трек Воздушный рой
1 место — 250 000 ₽
2 место — 150 000 ₽
3 место — 100 000 ₽

👌Заявки до 17 апреля,
регистрация: hackathon.1t.ru.

Реклама. ООО "1Т". ИНН 7705908531.
4.04.2025, 17:59
t.me/pyproglib/6591
4.04.2025, 17:59
t.me/pyproglib/6592
🐛 Фишка инструмента: учимся дебаггингу осознанно с py-bugger

Обычно отладка — это реактивный процесс: мы исправляем баги, когда они появляются. Но что, если учиться дебаггингу так же, как любой другой навык — от простого к сложному?

✅ Что делает py-bugger:
🔘 Добавляет ошибки в код: можно целенаправленно внедрять баги разных типов в проект (например, ModuleNotFoundError, IndentationError)
🔘 Позволяет тренироваться в отладке на реальных ошибках, но в контролируемых условиях
🔘 Отслеживает изменения: внесённые баги сохраняются в коммите, и их можно легко найти через git diff

✅ Как установить и использовать

1⃣ Устанавливаем py-bugger:
pip install python-bugger

2⃣ Запускаем тестовый Python-скрипт name_picker.py, который выбирает случайное имя из списка:
python name_picker.py
# The winner: Alice!

3⃣ Внедряем в этот код ошибку ModuleNotFoundError:
py-bugger --exception-type ModuleNotFoundError

Вы увидите сообщение:
Introducing a ModuleNotFoundError...
Modified file.

4⃣ Теперь запускаем скрипт снова и видим ошибку:
python name_picker.py
Traceback (most recent call last):
File "name_picker.py", line 1, in
import rando
ModuleNotFoundError: No module named 'rando'

Задача — найти и исправить ошибку.

5⃣ Если застряли, можно посмотреть внесённые изменения через git diff:
git diff

✅ Гибкие настройки `py-bugger`
Вы можете настроить тип ошибок, количество багов и целевой файл/директорию:

py-bugger -e AttributeError -n 3 --target-file my_script.py

Здесь:
🔘 -e AttributeError — добавит ошибку типа AttributeError
🔘 -n 3 — добавит три ошибки
🔘 --target-file my_script.py — внесёт баги в конкретный файл

Библиотека питониста #буст
4.04.2025, 09:52
t.me/pyproglib/6590
💭 Холивар: когда писать код на работе — по офисному графику или в моменты вдохновения?

Вот история, которая заставляет задуматься. Девушка подала резюме, и ей позвонили в 9 утра, но она ещё спала. Её кандидатуру сразу отклонили со словами: «Мы не хотим сотрудничать с человеком, который спит до 9 утра». Неужели, чтобы считаться профессионалом, нужно работать строго с 9:00 до 18:00?

Как бы вы отреагировали на такую ситуацию? Как вы организуете свою работу над кодом?
Го в комменты, устроим холивар!👇

❤️ — команда «Офисный график»: «Кодить надо с 9 до 18, как в нормальной компании! Дисциплина — залог успеха. Если ты не можешь работать по расписанию, то как ты дедлайны будешь соблюдать? И вообще, в офисе вся команда на месте, сразу можно обсудить баг или фичу!»

👍 — команда «Когда пишется»: «Код — это творчество! Я могу в 3 часа ночи написать шедевр, который за день в офисе не родится. Главное — результат, а не то, сижу ли я за компом с 9 утра.»

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

Библиотека питониста #развлекалово
3.04.2025, 21:07
t.me/pyproglib/6589
🎉 Выпущен Django 5.2

В новой версии представлено множество улучшений и новых возможностей.

🌟 Вот несколько ключевых изменений:
• Все модели автоматически импортируются в shell по умолчанию
• Поддержка составных первичных ключей
• Переопределение BoundField стало значительно проще: теперь это можно делать на уровне формы, поля или проекта

🔗 Анонс релиза: https://clc.to/lV9Qig

Библиотека питониста #свежак
3.04.2025, 13:01
t.me/pyproglib/6588
🔹 How to: как работают генераторы в Python

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

➡️ Принцип работы
Вместо возврата всех значений сразу, генератор использует yield, который приостанавливает выполнение функции, сохраняя её состояние:
def simple_generator():
print("Первый yield")
yield 1
print("Второй yield")
yield 2

gen = simple_generator()
print(next(gen)) # Первый yield → 1
print(next(gen)) # Второй yield → 2

При вызове next() выполнение продолжается с места, где остановилось. Это позволяет работать с последовательностями, не загружая их полностью в память.

➡️ Пример: Фибоначчи на генераторах
def fibonacci_generator(limit):
a, b = 0, 1
while a < limit:
yield a
a, b = b, a + b

Такой генератор можно использовать для обработки больших последовательностей без лишних затрат памяти.

➡️ Генераторы vs. списки
Генераторы экономят память, так как не хранят все элементы в памяти:
import sys

def list_numbers(n):
return [i for i in range(n)]

def generator_numbers(n):
return (i for i in range(n))

print(sys.getsizeof(list_numbers(1000000))) # 8448728 байт
print(sys.getsizeof(generator_numbers(1000000))) # 208 байт

Разница очевидна: генератор занимает всего 208 байт, тогда как список — 8+ мегабайт!

➡️ Генераторные выражения
Аналогично списковым включениям, но работают лениво:
squares_list = [x * x for x in range(10)] # Обычный список
squares_gen = (x * x for x in range(10)) # Генератор

➡️ Комбинирование генераторов
С помощью itertools генераторы можно объединять и фильтровать:
from itertools import chain, filterfalse

result = chain((x * x for x in range(10)), (y + 10 for y in range(5)))
odd_squares = filterfalse(lambda x: x % 2 == 0, (x * x for x in range(10)))


➡️ Когда использовать генераторы
— Обработка больших данных без перегрузки памяти
— Потоковая обработка (например, чтение файлов)
— Создание бесконечных последовательностей
— Оптимизация скорости и эффективности кода

Библиотека питониста #буст
3.04.2025, 09:54
t.me/pyproglib/6587
Ну, и такое бывало... 😂

Библиотека питониста #развлекалово
2.04.2025, 21:04
t.me/pyproglib/6586
Python Книги - канал для скачивания Python книг только на русском языке

Что в нашем канале:
1. Книги по питону, которые помогут вам подготовится к собеседованию.
2. Книги на русском языке
3. Много книг для начинающих
4. Все книги можно скачать в 2 клика

Подписывайтесь и качайте книги: @pythonknigiru

Реклама. Киренкина Марина Дмитриевна, ИНН 345702417736. Erid 2Vtzqx6XBP6
2.04.2025, 18:05
t.me/pyproglib/6585
📣 Программисты, нужен ваш совет!

Пилим крутую подборку ноутов для кодеров в 2025-м и хотим собрать реальный фидбек от тех, кто в теме!

Какой ноут спасает вас в кодинге и почему?

Расскажите все:
⭐ Что за зверь (модель, начинка)
⭐ Где жмет и где радует в ежедневной работе
⭐ На какие фишки смотреть при выборе
⭐ Как вам с ним живется

Топовые советы попадут в нашу статью. Сделаем годный гайд, который реально поможет коллегам!

Делитесь в комментах. ⬇️

Библиотека питониста
2.04.2025, 13:53
t.me/pyproglib/6584
🤓 Промпт, который сделает обучение Python проще

Учить сложные темы бывает непросто, но что, если можно разбить их на простые и понятные части? Делимся мощным промптом для ChatGPT, который поможет разобраться в любом сложном аспекте Python — от асинхронности до метапрограммирования.

⭐ Промпт:

I need help breaking down [конкретная тема] into smaller, simpler parts that are easier to understand.
Identify the most important 20% of learnings that will help me understand 80% of the subject.
Use analogies and real-life examples to explain each concept in a relatable way.
The explanation should focus on making the topic clear and engaging while connecting it to everyday experiences or situations.
Additionally, suggest tips or questions I can use to check my understanding of the material.


⭐ Как это работает:
— Разбивает сложную тему на ключевые 20% знаний, которые дадут 80% понимания
— Приводит аналоги и примеры из жизни (например, асинхронность как готовка в ресторане)
— Помогает проверить себя, предлагая вопросы для самопроверки

⭐ Примеры использования:
— Разобраться в asyncio через повседневные сценарии
— Понять работу metaclass с аналогиями из конструкторов LEGO
— Прояснить decorators, представив их как модульные дополнения в кафе


Библиотека питониста #буст
2.04.2025, 09:51
t.me/pyproglib/6583
Репост
6
9
2.2 k
🪄 Визуальные вычисления в Power BI: прокачиваем условное форматирование

Теперь настраивать условное форматирование в Power BI можно без сложных DAX-формул! Разбираем, как новые визуальные вычисления помогают создавать динамичные, адаптивные и стильные отчеты, которые мгновенно реагируют на изменения данных.

⭐️ Пора сделать отчеты действительно интерактивными!

🔗 Ссылка на статью: https://proglib.io/sh/lsb0fEuYSv

Библиотека дата-сайентиста
1.04.2025, 21:04
t.me/pyproglib/6582
🎉 PEP 751 (стандартный lockfile для Python) принят

⏳ После многих лет работы (и сотен сообщений в обсуждениях) Python-сообщество наконец-то приняло стандартный формат lockfile.

Разработчики всех ключевых инструментов для управления зависимостями участвовали в обсуждении, и теперь они либо полностью перейдут на новый формат (заменяя, например, poetry.lock или uv.lock), либо добавят поддержку экспорта в этот формат.

Что это значит для нас?
• Единый стандарт вместо множества requirements.txt
• Более простая и надежная развертка проектов
• Совместимость между инструментами для управления зависимостями

🔗 Подробности в PEP 751
🔗 Обсуждение на Python Discuss

Библиотека питониста #свежак
1.04.2025, 16:01
t.me/pyproglib/6581
😎 Инструмент недели: стань звездой разработки за 30 секунд

🎩 1 апреля — лучший день, чтобы апгрейдить свой статус в офисе!

rust-stakeholder — CLI-инструмент, который генерирует абсолютно бессмысленный, но очень крутой вывод в терминале.

💡 Помни: важна не реальная работа, а то, насколько сложным выглядит терминал, когда рядом проходит VP of Engineering.

🔥 Фичи, которые не дают никакой пользы, но выглядят суперважными:
✓ Dev-симуляции — решай «задачи CERN», листая Reddit
✓ Техножаргон — «Неевклидова оптимизация данных» (никто не поймёт!)
✓ Прогресс-бары — работа кипит, пока ты пьёшь кофе
✓ Фейк-сеть — API-запросы в никуда
✓ Командная активность — невидимые коллеги шлют «pull requests»
✓ Смена ролей — от backend до blockchain за секунду

Библиотека питониста #буст
1.04.2025, 14:00
t.me/pyproglib/6580
1.04.2025, 10:01
t.me/pyproglib/6575
1.04.2025, 10:01
t.me/pyproglib/6578
🎭 Dev Memes: 1 апреля, а баги всё те же

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

👉 Всё это — из нашего мемного канала «Библиотека IT-мемов»

Библиотека питониста
1.04.2025, 10:01
t.me/pyproglib/6574
1.04.2025, 10:01
t.me/pyproglib/6576
1.04.2025, 10:01
t.me/pyproglib/6579
1.04.2025, 10:01
t.me/pyproglib/6577
☀️ IT-календарь: главные релизы апреля

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

Python 3.14 alpha 7 — ожидается 8 апреля 2025 года. Предварительный релиз для тестирования, не предназначен для продакшн-сред.

Python 3.12.9 — последний багфикс-релиз перед окончанием активной поддержки 2 апреля 2025 года. Далее только обновления безопасности.

Python 3.13.3 — предполагаемый релиз с исправлениями ошибок, приблизительная дата апрель 2025 года.

Django 5.2 — ожидается финальный релиз в апреле 2025 года. Вероятно, получит статус LTS.

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

PyCon DE & PyData 2025 — состоится в Дармштадте, Германия, 23-25 апреля.

DjangoCon Europe 2025 — пройдет в Дублине, Ирландия, 23-27 апреля. Главное событие для всех, кто работает с Django.

🎉 Какой релиз или мероприятие вы ждете больше всего? Делитесь в комментариях!

Библиотека питониста #свежак
31.03.2025, 21:06
t.me/pyproglib/6573
🧩 Python-загадка

Пора сыграть в любимую всеми игру: что делает этот код?
def foo():
try:
return os._exit()
finally:
return False

import os
foo()

Что он делает:
🔥 — возвращает None
❤️ — возвращает False
👍 — выбрасывает исключение
⚡️ — завершает процесс без вывода чего-либо

Объясните свои ответы в комментариях.👇

Ответ:
Возвращает False. Хотите знать почему?

🟢Обычно os._exit завершает процесс без выполнения «обработчиков очистки» (блоков finally). Однако ему нужен один аргумент. Этот фрагмент кода забывает передать код выхода, поэтому вместо завершения процесса он выбрасывает TypeError. Затем блок finally тихо подавляет исключение из-за return.

🟢Возврат из блока finally на самом деле так часто используется неправильно, что разработчики Python планируют сделать так, чтобы в будущем выпуске это вызывало SyntaxWarning.

🟢Можно было бы подумать, что import os идёт после определения функции. Но в Python используется динамическая область видимости, так что это нормально.

🟢Также можно перепутать sys.exit с os._exit. sys.exit работает, выбрасывая исключение SystemExit, которое было бы перехвачено и подавлено блоком finally. Но _exit напрямую завершает процесс:

-> Завершает процесс с кодом состояния n, не вызывая обработчики очистки, не сбрасывая буферы stdio и т.д.

🔗 Оригинал статьи: https://clc.to/uL6PfA

Библиотека питониста #междусобойчик
31.03.2025, 14:02
t.me/pyproglib/6572
📌 Методы экземпляра, класса и статические методы в Python

Хотите писать чистый и поддерживаемый код? Давайте разберем, чем отличаются эти три типа методов в Python.

🔹 Методы экземпляра (`self`):
✓ Работают с конкретным объектом
✓ Изменяют атрибуты экземпляра
✓ Доступ к атрибутам класса через self.__class__
class MyClass:
def method(self):
return "Метод экземпляра", self

🔹 Методы класса (`cls`, `@classmethod`):
✓ Работают с классом в целом
✓ Могут изменять атрибуты класса
✓ Не изменяют атрибуты экземпляра
class MyClass:
@classmethod
def class_method(cls):
return "Метод класса", cls

🔹 Статические методы (`@staticmethod`):
✓ Не принимают self или cls
✓ Не изменяют состояние ни экземпляра, ни класса
✓ Используются для вспомогательных функций
class MyClass:
@staticmethod
def static_method():
return "Статический метод"

🔹 Применение в реальном коде:
class Pizza:
def __init__(self, ingredients):
self.ingredients = ingredients

@classmethod
def margherita(cls):
return cls(["моцарелла", "помидоры"])

@staticmethod
def circle_area(r):
import math
return r ** 2 * math.pi

pizza = Pizza.margherita() # Классовый метод
print(Pizza.circle_area(4)) # Статический метод

🔹 Вывод:
✓ Методы экземпляра изменяют данные конкретного объекта
✓ Методы класса работают с классом и создают альтернативные конструкторы
✓ Статические методы полезны для утилитарных функций

Библиотека питониста #буст
31.03.2025, 10:07
t.me/pyproglib/6571
🐍 Python новости

🚀 Релизы и инструменты:
IPython 9— новые возможности интерактивной оболочки
Mesop 1.0 — новый UI-фреймворк на Python для веб-приложений
Flet — фреймворк для кроссплатформенных мобильных и десктопных приложений

🔬 Глубже в Python:
Removing deprecated config format? Что может пойти не так? — удаление устаревших конфигураций в setuptools вызвало проблемы (но уже откатили)
Django Template Components — новый подход к компонентам в Django
Smoke-тестирование Django Admin — защита от неожиданных ошибок

📚 Обучение и лучшие практики:
Как уменьшить размер Docker-образа на 80%
Poetry, Rye или UV? — что выбрать для управления зависимостями
Как построить Hot Module Replacement в Python — обновляем код без перезапуска

📢 Анонсы и события:
Google Summer of Code 2025 — открыт приём заявок

Библиотека питониста #свежак
30.03.2025, 16:03
t.me/pyproglib/6570
Холивар: Python-разработка — строгая структура или гибкость?
29.03.2025, 16:01
t.me/pyproglib/6569
💬 Холивар: Python-разработка — строгая структура или гибкость?

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


1️⃣ ООП — классы, инкапсуляция, строгая архитектура. Подходит для больших проектов, когда важна масштабируемость и организация кода:
class NumberProcessor:
def __init__(self, numbers):
self.numbers = numbers

def filter_even(self):
self.numbers = [n for n in self.numbers if n % 2 == 0]
return self

def square(self):
self.numbers = [n**2 for n in self.numbers]
return self

def get_result(self):
return self.numbers

processor = NumberProcessor([1, 2, 3, 4, 5, 6])
result = processor.filter_even().square().get_result()
print(result) # [4, 16, 36]

2️⃣ Функциональный стиль — чистые функции, минимум побочных эффектов, иммутабельность данных. Удобно для работы с данными и параллельных вычислений:
from functools import reduce

def filter_even(numbers):
return list(filter(lambda x: x % 2 == 0, numbers))

def square(numbers):
return list(map(lambda x: x**2, numbers))

numbers = [1, 2, 3, 4, 5, 6]
result = square(filter_even(numbers))
print(result) # [4, 16, 36]

3️⃣ Простой скриптинг — главное, чтобы код работал! Идеально для быстрого прототипирования и автоматизации:
numbers = [1, 2, 3, 4, 5, 6]
result = [n**2 for n in numbers if n % 2 == 0]
print(result) # [4, 16, 36]

Какой стиль ближе? Выбирайте свой лагерь и аргументируйте в комментах! 👇

👍 ООП — потому что читаемо и поддерживаемо
❤️ Функциональный стиль — минимум багов и максимум эффективности
🔥 Скрипты — зачем усложнять, если можно просто?

Библиотека питониста #междусобойчик
29.03.2025, 15:53
t.me/pyproglib/6568
Результаты поиска ограничены до 100 публикаций.
Некоторые возможности доступны только премиум пользователям.
Необходимо оплатить подписку, чтобы пользоваться этим функционалом.
Фильтр
Тип публикаций
Хронология похожих публикаций:
Сначала новые
Похожие публикации не найдены
Сообщения
Найти похожие аватары
Каналы 0
Высокий
Название
Подписчики
По вашему запросу ничего не подошло