您现在的位置是:主页 > news > 四川网站建设培训/资源网站排名优化seo

四川网站建设培训/资源网站排名优化seo

admin2025/6/28 21:47:47news

简介四川网站建设培训,资源网站排名优化seo,天塔网站建设公司,个人免费发布房源平台使用 python 类型注释的数据验证和设置管理。pydantic在运行时强制执行类型提示,并在数据无效时提供用户友好的错误。定义数据应该如何在纯粹的、规范的 python 中;用pydantic验证它。 pydantic文档https://pydantic-docs.helpmanual.io/ 例子 from da…

四川网站建设培训,资源网站排名优化seo,天塔网站建设公司,个人免费发布房源平台使用 python 类型注释的数据验证和设置管理。pydantic在运行时强制执行类型提示,并在数据无效时提供用户友好的错误。定义数据应该如何在纯粹的、规范的 python 中;用pydantic验证它。 pydantic文档https://pydantic-docs.helpmanual.io/ 例子 from da…

使用 python 类型注释的数据验证和设置管理。pydantic在运行时强制执行类型提示,并在数据无效时提供用户友好的错误。定义数据应该如何在纯粹的、规范的 python 中;用pydantic验证它。 

pydantic文档https://pydantic-docs.helpmanual.io/

 例子

from datetime import datetime
from typing import List, Optional
from pydantic import BaseModelclass User(BaseModel):id: intname = 'John Doe'signup_ts: Optional[datetime] = Nonefriends: List[int] = []external_data = {'id': '123','signup_ts': '2019-06-01 12:22','friends': [1, 2, '3'],
}
user = User(**external_data)
print(user.id)
#> 123
print(repr(user.signup_ts))
#> datetime.datetime(2019, 6, 1, 12, 22)
print(user.friends)
#> [1, 2, 3]
print(user.dict())
"""
{'id': 123,'signup_ts': datetime.datetime(2019, 6, 1, 12, 22),'friends': [1, 2, 3],'name': 'John Doe',
}
"""

这里发生了什么:

  • id是 int 类型的;仅注释声明告诉pydantic该字段是必需的。如果可能,字符串、字节或浮点数将被强制转换为整数;否则将引发异常。
  • name从提供的默认值推断为字符串;因为它有一个默认值,所以它不是必需的。
  • signup_ts是一个不需要的日期时间字段(None如果未提供,则采用该值)。 pydantic将处理一个 unix timestamp int (eg 1496498400) 或一个表示日期和时间的字符串。
  • friends使用 python 的打字系统,并且需要一个整数列表。与id一样,类似整数的对象将被转换为整数。

如果验证失败,pydantic 将引发错误并详细说明错误:

from pydantic import ValidationErrortry:User(signup_ts='broken', friends=[1, 2, 'not number'])
except ValidationError as e:print(e.json())
输出:
[{"loc": ["id"],"msg": "field required","type": "value_error.missing"},{"loc": ["signup_ts"],"msg": "invalid datetime format","type": "value_error.datetime"},{"loc": ["friends",2],"msg": "value is not a valid integer","type": "type_error.integer"}
]

基本原理

所以pydantic使用了一些很酷的新语言特性,但我为什么要实际去使用它呢?

与您的 IDE/linter/brain 配合得很好

无需学习新的模式定义微语言。如果你知道如何使用 python 类型提示,你就会知道如何使用pydantic。数据结构只是您使用类型注释定义的类的实例,因此自动完成、linting、mypy、IDE(尤其是PyCharm)和您的直觉都应该与您的验证数据正常工作。

两用

pydantic 的 BaseSettings类允许在“验证此请求数据”上下文和“加载我的系统设置”上下文中使用pydantic 。主要区别在于可以从环境变量中读取系统设置,并且通常需要更复杂的对象,例如 DSN 和 python 对象。

快速地

在基准测试 中,pydantic比所有其他经过测试的库都快。

验证复杂结构

使用递归pydantic模型、typing的 标准类型(例如ListTupleDict)和 验证器允许清晰、轻松地定义、验证和解析复杂的数据模式。

可扩展

pydantic允许定义自定义数据类型,或者您可以使用validator装饰器装饰的模型上的方法扩展验证。

数据类集成

以及BaseModelpydantic提供了一个dataclass装饰器,它创建(几乎)带有输入数据解析和验证的 vanilla python 数据类。