Вопрос с собеседования · Python

Как проверять входные данные с помощью Pydantic?

JuniorТипы данных
Ещё спрашивают так:
  • Зачем нужен Pydantic?
  • Как валидировать JSON в Python?
Коротко

Pydantic проверяет и преобразует данные во время выполнения по аннотациям класса-наследника BaseModel: строку «42» превратит в int, а «abc» для int отклонит с понятной ошибкой ValidationError, где указано поле и причина. Ограничения задают через Field (min_length, ge, le) и валидаторы. Используют для входящих запросов API, конфигурации, ответов внешних сервисов и LLM.

  • model_validate(dict) и model_validate_json(str) — создать из данных
  • model_dump() и model_dump_json() — обратно в словарь и JSON
  • Лишние поля по умолчанию игнорируются, можно запретить

А ещё FastAPI использует Pydantic для проверки тела запроса и описания API

Подробно

Пример:

from pydantic import BaseModel, Field, EmailStr

class Signup(BaseModel):
    name: str = Field(min_length=1, max_length=100)
    email: EmailStr
    age: int = Field(ge=14)

data = {"name": "Анна", "email": "a@example.ru", "age": "25"}
user = Signup.model_validate(data)   # age станет int 25

При ошибке:

1 validation error for Signup
age
  Input should be greater than or equal to 14

Чем отличается от dataclass: dataclass не проверяет типы, а Pydantic проверяет и преобразует.

Что хотят услышать

  • Проверка и преобразование во время выполнения.
  • BaseModel, Field, ValidationError.
  • Сериализация обратно.
  • Отличие от dataclass.

Проверьте себя

Один верный вариант. Подумайте, потом откройте ответ.

Показать варианты и ответ
  • ✗Проверяет типы только статически, как mypy, а во время выполнения данные не трогает
  • ✗Отличается от dataclass только синтаксисом объявления полей, проверок не добавляет
  • ✗Не умеет разбирать JSON напрямую — сначала нужно вручную получить словарь Python
  • ✓Проверяет и преобразует данные при выполнении, ошибка — ValidationError

Разбор темы

Связанные вопросы

Партнёр платформы

Разбор собеседования с sotto

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

Разбор собеседования