目前我正在学习Python和Fastapi,但是我不知道typing.Optional有什么用。
class Post(BaseModel):
# default value
rating: int = None
# typing.Optional
rating: Optional[int] = None
两种都可以。我不明白它们之间有什么区别。
目前我正在学习Python和Fastapi,但是我不知道typing.Optional有什么用。
class Post(BaseModel):
# default value
rating: int = None
# typing.Optional
rating: Optional[int] = None
两种都可以。我不明白它们之间有什么区别。
typing.Optional
)中:
在 Pydantic 中,这意味着指定字段value变成了可选的。 换句话说,在初始化模型时不必传递字段和值,而值将默认为
Optional[x]
简单来说就是Union[x, None]
None
(这与函数调用中描述的可选参数略有不同,详见此处)。None
作为默认值。None
,
如在Required Optional Fields部分建议的那样,这时区分是必需的。from pydantic import BaseModel
from typing import Optional
class Post(BaseModel):
# rating is required and must be an integer.
rating: int
# counter is not required and will default to 1 if nothing is passed.
counter: int = 1
# comment is optional and will be coerced into a str.
comment: Optional[str]
# This will work:
post = Post(rating=10)
repr(post)
# 'Post(rating=10, counter=1, comment=None)'
# This will work as well:
post = Post(rating=10, comment="some text")
repr(post)
# "Post(rating=10, counter=1, comment='some text')"
# But this won't work:
post = Post(comment="some text")
# ...
# ValidationError: 1 validation error for Post
# rating
# field required (type=value_error.missing)
# And this won't work either:
post = Post(rating=10, counter=None)
# ...
# ValidationError: 1 validation error for Post1
# counter
# none is not an allowed value (type=type_error.none.not_allowed)
None
/ null(该字段是必填项,但值是可选的)。 - MatsLindh