欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Pydantic中Optional 和Union類型的使用

 更新時間:2025年04月09日 10:54:25   作者:霍格沃茲測試開發(fā)學(xué)社  
本文主要介紹了Pydantic中Optional 和Union類型的使用,這兩者在處理可選字段和多類型字段時尤為重要,文中通過示例代碼介紹的非常詳細,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

簡介

Pydantic 是一個用于數(shù)據(jù)驗證和設(shè)置管理的 Python 庫,它通過類型注解(type hints)提供了強大的數(shù)據(jù)驗證功能。本文將深入探討 Pydantic中 Optional 和 Union 類型的使用,這兩者在處理可選字段和多類型字段時尤為重要。

Optional 類型

Optional類型用于表示一個字段可以是指定類型或 None。這在需要可選字段時非常有用。

定義可選字段

通過 typing.Optional 可以定義可選字段。實際使用中,Optional[X] 等價于 Union[X, None]。

from typing import Optional
from pydantic import BaseModel

class User(BaseModel):
    id: int
    name: str
    age: Optional[int] = None  # age 可以是 int 或 None

user1 = User(id=1, name='Alice', age=30)
user2 = User(id=2, name='Bob')  # age 省略,默認為 None

print(user1)
print(user2)

驗證可選字段

Pydantic 會自動處理可選字段的驗證。如果字段值為 None 或不提供值,它不會引發(fā)驗證錯誤。

from pydantic import ValidationError

try:
    user = User(id=3, name='Charlie', age='thirty')
except ValidationError as e:
    print(e)

上述代碼會因為 age 不能轉(zhuǎn)換為整數(shù)而引發(fā)驗證錯誤。

Union 類型

Union 類型用于表示字段可以是多個類型中的一種。它允許更靈活的數(shù)據(jù)輸入。

定義多類型字段

通過 typing.Union 可以定義字段可以接受多個類型。

from typing import Union
from pydantic import BaseModel

class Item(BaseModel):
    id: int
    value: Union[str, int]  # value 可以是 str 或 int

item1 = Item(id=1, value='a string')
item2 = Item(id=2, value=100)

print(item1)
print(item2)

驗證多類型字段

Pydantic 會嘗試將字段值匹配到 Union 類型中列出的每一種類型,直到成功為止。

from pydantic import ValidationError

try:
    item = Item(id=3, value=[1, 2, 3])  # list 不是合法的類型
except ValidationError as e:
    print(e)

上述代碼會因為 value 不是 str 或 int 而引發(fā)驗證錯誤。

Optional 和 Union 的組合

在實際應(yīng)用中,我們經(jīng)常需要組合使用 Optional 和 Union 來處理更復(fù)雜的場景。

可選的多類型字段

我們可以使用 Optional[Union[X, Y]] 表示字段可以是 X 類型或 Y 類型,或者 None。

class Product(BaseModel):
    id: int
    discount: Optional[Union[int, float]] = None  # discount 可以是 int、float 或 None

product1 = Product(id=1, discount=20)
product2 = Product(id=2, discount=15.5)
product3 = Product(id=3)  # discount 省略,默認為 None

print(product1)
print(product2)
print(product3)

驗證可選的多類型字段

Pydantic 會按順序驗證 Union 中列出的每個類型,并允許字段為 None。

from pydantic import ValidationError

try:
    product = Product(id=4, discount='50%')  # str 不是合法的類型
except ValidationError as e:
    print(e)

上述代碼會因為 discount 不是 int 或 float 而引發(fā)驗證錯誤。

總結(jié)

Pydantic 的 Optional 和 Union 類型提供了靈活的數(shù)據(jù)驗證機制,使得我們能夠處理復(fù)雜的可選字段和多類型字段。在定義數(shù)據(jù)模型時,合理使用這兩種類型可以顯著提高代碼的健壯性和可讀性。

到此這篇關(guān)于Pydantic中Optional 和Union類型的使用的文章就介紹到這了,更多相關(guān)Pydantic Optional  Union內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 詳解Flask前后端分離項目案例

    詳解Flask前后端分離項目案例

    這篇文章主要介紹了Flask前后端分離項目案例,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07
  • Pytorch搭建yolo3目標檢測平臺實現(xiàn)源碼

    Pytorch搭建yolo3目標檢測平臺實現(xiàn)源碼

    這篇文章主要為大家介紹了Pytorch搭建yolo3目標檢測平臺實現(xiàn)源碼,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-05-05
  • windows系統(tǒng)Tensorflow2.x簡單安裝記錄(圖文)

    windows系統(tǒng)Tensorflow2.x簡單安裝記錄(圖文)

    這篇文章主要介紹了windows系統(tǒng)Tensorflow2.x簡單安裝記錄(圖文),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-01-01
  • Python?Requests庫知識匯總

    Python?Requests庫知識匯總

    這篇文章主要介紹了Python?Requests庫學(xué)習(xí)總結(jié),本文通過示例代碼給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-05-05
  • 只用20行Python代碼實現(xiàn)屏幕錄制功能

    只用20行Python代碼實現(xiàn)屏幕錄制功能

    python小哥哥發(fā)現(xiàn)女朋友最近總是很忙的樣子,晚上匆匆忙忙道過晚安就不說話了.可是,QQ頭像卻會偶爾亮起來.小哥哥非常擔(dān)心,是不是賬號被盜了呢然后,就想幫女朋友排查一下所以就用python寫了一個錄制腳本,悄悄裝在女友電腦上,需要的朋友可以參考下
    2021-06-06
  • python dataframe 輸出結(jié)果整行顯示的方法

    python dataframe 輸出結(jié)果整行顯示的方法

    今天小編就為大家分享一篇python dataframe 輸出結(jié)果整行顯示的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-06-06
  • 對Xpath 獲取子標簽下所有文本的方法詳解

    對Xpath 獲取子標簽下所有文本的方法詳解

    今天小編就為大家分享一篇對Xpath 獲取子標簽下所有文本的方法詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-01-01
  • 詳解Python做一個名片管理系統(tǒng)

    詳解Python做一個名片管理系統(tǒng)

    這篇文章主要介紹了Python如何做一個名片管理系統(tǒng),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-03-03
  • Python隨手筆記第一篇(2)之初識列表和元組

    Python隨手筆記第一篇(2)之初識列表和元組

    Python中,列表和元組是一種數(shù)據(jù)結(jié)構(gòu):序列,序列中的每個元素都被分配一個序號,元素的位置,第一原元素的位置為0,因此類推,序列是最基本的數(shù)據(jù)結(jié)構(gòu),本文給大家分享Python隨手筆記第一篇(2)之初識列表和元組,感興趣的朋友一起學(xué)習(xí)吧
    2016-01-01
  • centos 自動運行python腳本和配置 Python 定時任務(wù)

    centos 自動運行python腳本和配置 Python 定時任務(wù)

    這篇文章主要介紹了centos 自動運行python腳本和配置 Python 定時任務(wù),文章內(nèi)容介紹詳細,需要的小伙伴可以參考一下,希望對你有所幫助
    2022-03-03

最新評論