pydantic
字段的默认值如何设置获取当前时间
这种情况不要使用 default
,而要用 default_factory
关于这两种的区别说明如下:
:param default: since this is replacing the field’s default, its first argument is used
to set the default, use ellipsis (``...``) to indicate the field is required
:param default_factory: callable that will be called when a default value is needed for this field
If both `default` and `default_factory` are set, an error is raised.
来看看错误的例子,即通过
default
获取当前时间:from datetime import datetime, timezone
from pydantic import BaseModel, Field
from typing import Optional
import timedef get_utc_now_timestamp() -> datetime:
return datetime.utcnow().replace(tzinfo=timezone.utc)class Struct(BaseModel):
releaseDate: Optional[datetime] = Field(
default=get_utc_now_timestamp()
)print(Struct().releaseDate)
time.sleep(1)
print(Struct().releaseDate)
可以看到两个时间是一样的
2022-01-27 14:16:23.876755+00:00
2022-01-27 14:16:23.876755+00:00
再来看看
default_factory
:from datetime import datetime, timezone
from pydantic import BaseModel, Field
from typing import Optional
import timedef get_utc_now_timestamp() -> datetime:
return datetime.utcnow().replace(tzinfo=timezone.utc)class Struct(BaseModel):
releaseDate: Optional[datetime] = Field(
default_factory=get_utc_now_timestamp
)print(Struct().releaseDate)
time.sleep(1)
print(Struct().releaseDate)
【pydantic 字段的默认值设置获取当前时间】可以看到,两个时间相距了
1
秒钟2022-01-27 14:15:55.195409+00:00
2022-01-27 14:15:56.200775+00:00
推荐阅读
- 推荐系统论文进阶|CTR预估 论文精读(十一)--Deep Interest Evolution Network(DIEN)
- Python专栏|数据分析的常规流程
- Python|Win10下 Python开发环境搭建(PyCharm + Anaconda) && 环境变量配置 && 常用工具安装配置
- Python绘制小红花
- Pytorch学习|sklearn-SVM 模型保存、交叉验证与网格搜索
- OpenCV|OpenCV-Python实战(18)——深度学习简介与入门示例
- python|8. 文件系统——文件的删除、移动、复制过程以及链接文件
- 爬虫|若想拿下爬虫大单,怎能不会逆向爬虫,价值过万的逆向爬虫教程限时分享
- 分布式|《Python3网络爬虫开发实战(第二版)》内容介绍
- java|微软认真聆听了开源 .NET 开发社区的炮轰( 通过CLI 支持 Hot Reload 功能)