Pydantic: 10 наиболее распространенных моделей использования Python

@python_job_interview разбор вопросов с собеседований Python в нашем канале.

  1. Базовая валидация данных
    Использование модели Pydantic для простой проверки входящих данных.
from pydantic import BaseModel

class User(BaseModel):
    name: str
    age: int

user = User(name='John Doe', age=30)
  1. Значения по умолчанию
    Определение значения по умолчанию для полей вашей модели.
class User(BaseModel):
    name: str
    age: int = 18  # Default value
  1. Необязательные поля
    Отметьте поля как необязательные с помощью типа Optional.
from typing import Optional

class User(BaseModel):
    name: str
    age: Optional[int] = None
  1. Пользовательские валидаторы
    Создавайте пользовательские валидаторы с помощью декоратора @validator.
from pydantic import validator

class User(BaseModel):
    name: str
    age: int

    @validator('age')
    def validate_age(cls, value):
        if value < 18:
            raise ValueError('User must be 18+')
        return value
  1. Вложенные модели
    Используйте модели Pydantic для проверки вложенных структур данных.
class Address(BaseModel):
    street: str
    city: str

class User(BaseModel):
    name: str
    age: int
    address: Address
  1. Списки моделей
    Работа со списками определенной модели.
from typing import List

class User(BaseModel):
    name: str
    age: int

class UserList(BaseModel):
    users: List[User]
  1. Использование Union
    Используйте Union, чтобы позволить полю быть одним из нескольких типов.
from typing import Union

class User(BaseModel):
    identifier: Union[str, int]
  1. Ограничения значений
    Накладывайте ограничения на значения с помощью Field.
from pydantic import Field

class User(BaseModel):
    name: str
    age: int = Field(..., gt=0, lt=120)  # Greater than 0, less than 120

  1. Псевдонимы для полей
    Определите псевдонимы для полей модели, что может быть полезно для полей, которые являются ключевыми словами Python.
class User(BaseModel):
    name: str
    class_: str = Field(alias='class')
  1. Рекурсивные модели
    Создавайте модели, которые могут содержать сами себя.
from typing import Optional

class TreeNode(BaseModel):
    value: int
    left: Optional['TreeNode'] = None
    right: Optional['TreeNode'] = None

TreeNode.update_forward_refs()  # Resolve string annotations
+1
1
+1
3
+1
0
+1
0
+1
0

Ответить

Ваш адрес email не будет опубликован. Обязательные поля помечены *