Ответ
Pydantic — это библиотека для валидации данных и управления настройками в Python, использующая аннотации типов.
Она позволяет создавать четкие, явные и легко проверяемые модели данных, что критически важно при работе с API, конфигурационными файлами и сложными структурами данных. Pydantic является стандартом де-факто для фреймворка FastAPI.
Ключевые возможности:
- Валидация данных: Автоматически проверяет типы и значения полей на основе аннотаций (
str
,int
,List[float]
) и дополнительных ограничений (Field
). - Сериализация и десериализация: Легко преобразует объекты Python в JSON и обратно (
.model_dump()
,.model_dump_json()
). - Поддержка IDE: Улучшает автодополнение и статическую проверку кода благодаря явным моделям.
- Кастомные валидаторы: Позволяет определять сложную логику проверки для конкретных полей.
Пример модели с валидацией:
from pydantic import BaseModel, Field, field_validator, ValidationError
from typing import List
class User(BaseModel):
id: int
name: str = Field(min_length=2, description="Имя пользователя")
tags: List[str] = []
# Пользовательский валидатор для поля 'name'
@field_validator('name')
def name_must_be_capitalized(cls, v: str) -> str:
if not v[0].isupper():
raise ValueError('Имя должно начинаться с заглавной буквы')
return v
# --- Использование ---
# Валидные данные
user_data = {'id': 1, 'name': 'Alice', 'tags': ['admin', 'user']}
user = User(**user_data)
print(user.model_dump_json(indent=2))
# Вывод:
# {
# "id": 1,
# "name": "Alice",
# "tags": [
# "admin",
# "user"
# ]
# }
# Невалидные данные
try:
invalid_data = {'id': 2, 'name': 'bob'}
User(**invalid_data) # Вызовет ValidationError
except ValidationError as e:
print(e)
Pydantic сокращает количество шаблонного кода для проверки данных и делает код более надежным и читаемым.