Python/ django
61.7K subscribers
2.37K photos
177 videos
48 files
3.12K links
по всем вопросам @haarrp

@itchannels_telegram - 🔥 все ит каналы

@ai_machinelearning_big_data -ML

@ArtificialIntelligencedl -AI

@datascienceiot - 📚

@pythonlbooks

РКН: clck.ru/3FmxmM
Download Telegram
🖥 Pydantic имеет встроенную функцию #DataValidation , но она потребляет много памяти.

Attrs не имеет встроенной проверки данных и обеспечивает более высокую производительность и меньшее использование памяти, что идеально подходит для внутренних структур данных и простого создания классов в #Python.




from attrs import define, field

@define
class UserAttrs:
name: str
age: int = field()

@age.validator
def check_age(self, attribute, value):
if value < 0:
raise ValueError("Age can't be negative")
return value # accepts any positive age


try:
user = UserAttrs(name="Bob", age=-1)
except ValueError as e:
print("ValueError:", e)


📌 Пример

@pythonl
Please open Telegram to view this post
VIEW IN TELEGRAM
👍178🔥5
This media is not supported in your browser
VIEW IN TELEGRAM
🐍 Почему ошибки валидации в Python иногда так сложно найти

Чем глубже вложена структура данных, тем сложнее понять, где именно произошла ошибка.

Если использовать обычные dataclass, вы чаще всего увидите только значение, которое не прошло проверку — но не путь к полю, где возникла проблема.

В сложных вложенных структурах это превращает отладку в настоящую боль.

Pydantic решает эту проблему.

Он показывает полный путь до поля, которое вызвало ошибку — от корневой модели до конкретного атрибута.

В результате сразу понятно, где искать проблему.

Пример:


from pydantic import BaseModel, Field

class Address(BaseModel):
zip_code: str = Field(pattern=r"^\d{5}$")

class Customer(BaseModel):
name: str
address: Address

customer = Customer(
name="Alice",
address={"zip_code": "9ABC1"}
)


Ошибка будет выглядеть так:


ValidationError: address.zip_code
String should match pattern '^\d{5}$'


То есть Pydantic сразу показывает:

address.zip_code

А не просто сообщает, что «где-то внутри данных ошибка».

Для сложных JSON, API-ответов и вложенных моделей это сильно упрощает дебаг.

#Python #Pydantic #Backend #DataValidation

🐍 Python полезные ресурсы 🚀Max

@pythonl
12👍12🔥4