Pytex — Школа Python разработки
871 subscribers
50 photos
1 video
22 links
Онлайн-школа Python разработки Pytex
https://pytex.school
Download Telegram
Protocol в Python: шпаргалка для разработчика

Если ты до сих пор строишь зависимости через базовые классы и ABC, пора взглянуть на Protocol

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

На картинках всё, что действительно нужно знать про Protocol в Python ⚡️
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
1052👍1
Рубрика #проверь_себя

В Pydantic есть объекты-валидаторы, которые используются для проверки и преобразования данных перед их присвоением полям модели, также для выполнения дополнительной логики валидации на уровне поля или модели.

Предлагаем выполнить следующее задание, связанное с работой валидаторов AfterValidator и BeforeValidator. Обычно такие валидаторы применяют как декораторы к функциям, но в этом примере мы рассмотрим их использование напрямую через классы.

Что будет выведено на экран при запуске кода? ⬇️

from typing import Annotated
from pydantic import BaseModel, ValidationError, AfterValidator, BeforeValidator


def is_less_than_100(value):
if value > 100:
raise ValueError(f'{value} is less than 100')
return value


def to_int(value):
return int(value)


def multiply(value):
return value * 3


MagicNumber = Annotated[int | str, AfterValidator(to_int), BeforeValidator(multiply)]


class MyModel(BaseModel):
val: Annotated[MagicNumber, AfterValidator(is_less_than_100)]


if __name__ == '__main__':
try:
print(MyModel(val='5'))
except (ValueError, TypeError, ValidationError) as err:
print(err)
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3🤝1
Пояснение ко вчерашней задаче

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

* BeforeValidator(multiply) - запускается перед проверкой типа Pydantic, на этом этапе val всё ещё тот, что передан при создании модели. После BeforeValidator Pydantic пытается привести значение к типу, указанному в аннотации.
* AfterValidator(to_int) - запускается после приведения типа, указанного в аннотации.
* AfterValidator(is_less_than_100) - запускается после AfterValidator с учетом вложенности.

Итоговая цепочка событий:

При входящем значении val='5' BeforeValidator(multiply)отдает строку '5' * 3 = '555', далее AfterValidator(to_int) переводит '555' в int, и в финале валидатор AfterValidator(is_less_than_100) отсекает полученное число 555, так как оно больше 100.
3👍3
Опыт backend разработчика измеряется не только строками кода.

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

Проверим по бинго?

Ставь 🔥, если собрал больше трёх пунктов
Please open Telegram to view this post
VIEW IN TELEGRAM
126👍3
Наш 2025 год

Самое приятное в подведении итогов года – это осознавать, как далеко мы продвинулись и изменились по сравнению с прошлым. Рассказываем, как прошёл этот год в Pytex ⬆️

Спасибо, что был с нами в этом году! Мы очень стараемся давать как можно больше пользы для разработчиков, поэтому нам приятно получать твою поддержку и благодарность 💚
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
5🔥44🥰11
С наступающим 2026, разработчики!

from fastapi import FastAPI

app = FastAPI()

@app.get("/new-year")
def happy_new_year(year: int = 2026):
    wishes = [
        "Молниеносных откликов < 50 мс",
        "Отсутствия 500-ок в проде",
        "Безболезненных деплоев",
        "Стабильных воркеров и очередей",
        "Понятных логов и чистых трассировок",
        "Зелёных тестов и добрых ревью"
    ]
    return {
        "message": f"С Новым годом, друзья! В {year} желаем:",
        "wishes": wishes,
        "status": "success"
    }

happy_new_year()


И пусть в вашем проекте под названием "2026":
🍊 не будет зависаний и дедлоков,
🍊 все роуты будут честно отдавать 200 OK,
🍊 а жизнь стабильно проходила через async def, без блокировок и перегрузов.

Увидимся в новом году!
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥1475
Как выбрать идею для pet-проекта

Одна из самых частых проблем у начинающих и junior-разработчиков заключается в выборе темы для pet-проекта.

Мы собрали несколько рабочих подходов, которые помогают выбрать идею, которую не захочется бросить через неделю ⬆️

Полезные ссылки из карточек:
GitHub Trending

Сабреддит r/SideProject/
Сабреддит r/Entrepreneur/
Пет-проекты Солвит
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍743
🔥 Проверим, как хорошо ты понимаешь асинхронность?

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

1️⃣ Async / Await — механизм для параллельного выполнения кода в нескольких потоках
2️⃣ Event Loop — компонент, который управляет выполнением асинхронных задач и очередей
3️⃣ Future / Task — объект, который всегда содержит готовый результат выполнения корутины
4️⃣ Non-blocking I/O — операции, которые не блокируют event loop во время ожидания результата
5️⃣ Concurrency — одновременное выполнение задач строго на разных ядрах процессора
6️⃣ Callback — функция, которая вызывается после завершения асинхронной операции
7️⃣ Deadlock — ситуация, при которой корутины взаимно ждут ресурсы и не могут продолжить выполнение
8️⃣ Async-framework — фреймворк, который автоматически ускоряет любую бизнес-логику

Пиши свои варианты в комментариях 👇🏻
Please open Telegram to view this post
VIEW IN TELEGRAM
👍322