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

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

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

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

По рекламе: @proglib_adv
РКН: https://gosuslugi.ru/snet/67b885cbd501cf3b2cdb5b36
Download Telegram
🐍 Пиши как профи: 10 Python-лайфхаков для новичков

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

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

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

📎 Статья

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

Proglib Academy #буст
Please open Telegram to view this post
VIEW IN TELEGRAM
👍142
📱 Новый ассистент 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
— Не уверены в архитектуре или выборе инструментов
— Хотите прокачать подход к разработке на уровне профессионала

Библиотека питониста #буст
Please open Telegram to view this post
VIEW IN TELEGRAM
👍163😁2🔥1
⌨️ Как адаптировать код под синтаксические изменения в 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


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

Библиотека питониста #буст
Please open Telegram to view this post
VIEW IN TELEGRAM
👍253❤‍🔥1
🤯 Как простая задачка поставила в тупик программистов

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


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

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

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

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

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

Proglib Academy #буст
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥63👍3
🐍 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

Библиотека питониста #свежак
Please open Telegram to view this post
VIEW IN TELEGRAM
🤩942
🔥 Холивар: 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

Библиотека питониста #междусобойчик
Please open Telegram to view this post
VIEW IN TELEGRAM
👍90🔥3514😁13👾3
🔰 Модуль 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) # <NotificationMethod.IN_APP|PUSH: 3>


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

Проверка уникальности значений с помощью декоратора @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


Библиотека питониста #буст
Please open Telegram to view this post
VIEW IN TELEGRAM
👍245🤔2
🎓 Как выбрать свою роль в Data Science и не потеряться в терминах

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

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

— Кто такие Data Engineer

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

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

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

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

📎 Ссылка

Азбука айтишника #ликбез
Please open Telegram to view this post
VIEW IN TELEGRAM
6
🔎 Wordsearch: узнаем, кто самый внимательный

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

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

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

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

Библиотека питониста #междусобойчик
4
📚Напоминаем про наш полный курс «Самоучитель по 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
12👍8
📱 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

Библиотека питониста #свежак
Please open Telegram to view this post
VIEW IN TELEGRAM
4👍2❤‍🔥1
Что представляют собой генераторы в Python, как функционирует метод send() в этих генераторах и каким образом его можно применять для управления их поведением?

Генераторы в Python представляют собой функции, которые применяют оператор yield для возврата значений и временной приостановки выполнения. С помощью метода send() можно отправлять данные обратно в генератор, которые затем могут быть использованы при следующем возобновлении его работы. Это делает генераторы двусторонними, позволяя не только получать значения, но и передавать данные внутрь.
7👍2
🔥 Конкурс: 30 000 ₽ за самую смешную IT-новость

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

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

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

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

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

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

Осталась неделя — ждем ваших новостей!
👍4
⌨️ Топ-вакансий для питонистов за неделю

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

Библиотека питониста
Please open Telegram to view this post
VIEW IN TELEGRAM
4
🔰 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"]


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

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

Библиотека питониста #буст
Please open Telegram to view this post
VIEW IN TELEGRAM
👍266🔥3👏1
🏗 7 архитектурных паттернов, которые должен знать каждый программист

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

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

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

Библиотека питониста
👍91🔥1
👍 Команда дня: 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" нет


Библиотека питониста #буст
Please open Telegram to view this post
VIEW IN TELEGRAM
13👍5❤‍🔥1