gpt4 book ai didi

fastapi - Pydantic 类型语法解释

转载 作者:行者123 更新时间:2023-12-05 09:35:04 29 4
gpt4 key购买 nike

下面代码来自官方FastAPI tutorials page ,我无法理解这些语句(例如,name: str)。

from typing import Optional

from fastapi import FastAPI
from pydantic import BaseModel


class Item(BaseModel):
name: str
description: Optional[str] = None
price: float
tax: Optional[float] = None


app = FastAPI()


@app.post("/items/")
async def create_item(item: Item):
return item

我的意思是,我知道他们应该强制执行类型,但他们应该如何执行,因为 python 不强制执行类型。

  • 我还看到了 Pydantic手册,但在类声明中没有看到关于此特定语法(例如,name: str)的解释。

有人可以为我解释一下这个语法吗?当你以这种方式创建一个类时,你如何检查它的类型?

提前致谢。

最佳答案

Python 的输入行为

Python 3.5 以上支持打字:https://docs.python.org/3/library/typing.html .如果你的类型提示不正确,你的代码仍然会运行——正如文档所说:它只是一个类型提示。 Python 仍然是一种动态类型的语言。但是,您可以使用 MyPy 在运行前捕获这些错误。

Pydantic 的打字行为

尽管了解 Pydantic 的行为也很重要:如果您的类型不是 str,但可以进行转换,它将首先转换为字符串,而不会出现任何错误消息。否则,它将引发错误。

如果你想在没有转换的情况下强制引发错误,你应该使用 Pydantic 严格类型:https://pydantic-docs.helpmanual.io/usage/types/#strict-types

但 Pydantic 文档告诉您的是:“[...] 仅注释声明告诉 pydantic 该字段是必需的。如果可能,字符串、字节或 float 将被强制转换为整数;否则将引发异常。”( https://pydantic-docs.helpmanual.io/ )

关于fastapi - Pydantic 类型语法解释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66133960/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com