最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Pydantic中Optional 和Union類型的使用

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

簡介

Pydantic 是一個用于數(shù)據(jù)驗證和設置管理的 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 不能轉換為整數(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 的組合

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

可選的多類型字段

我們可以使用 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ā)驗證錯誤。

總結

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

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

相關文章

  • Python自制一個PDF轉PNG圖片小工具

    Python自制一個PDF轉PNG圖片小工具

    這篇文章主要為大家詳細介紹了如何利用Python中的PyQt5自制一個PDF轉PNG格式圖片的小工具,文中的示例代碼講解詳細,感興趣的可以了解一下
    2023-02-02
  • Python通過OpenPyXL處理Excel的完整教程

    Python通過OpenPyXL處理Excel的完整教程

    OpenPyXL是一個強大的Python庫,用于處理Excel文件,允許讀取、編輯和創(chuàng)建Excel工作簿和工作表,本文將詳細介紹OpenPyXL的各種功能,希望對大家有所幫助
    2023-11-11
  • Python 解決中文寫入Excel時拋異常的問題

    Python 解決中文寫入Excel時拋異常的問題

    下面小編就為大家分享一篇Python 解決中文寫入Excel時拋異常的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-05-05
  • 二十種Python代碼游戲源代碼分享

    二十種Python代碼游戲源代碼分享

    這篇文章主要介紹了二十種Python代碼游戲源代碼分享,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-04-04
  • Python開根號的幾種方式詳解

    Python開根號的幾種方式詳解

    使用Python中的自帶庫math、自帶函數(shù)pow和自帶庫cmath來對數(shù)字進行開根號運算,這篇文章主要介紹了Python開根號的幾種方式,需要的朋友可以參考下
    2023-01-01
  • 關于Python數(shù)據(jù)處理中的None、NULL和NaN的理解與應用

    關于Python數(shù)據(jù)處理中的None、NULL和NaN的理解與應用

    這篇文章主要介紹了關于Python數(shù)據(jù)處理中的None、NULL和NaN的理解與應用,None表示空值,一個特殊Python對象,None的類型是NoneType,需要的朋友可以參考下
    2023-08-08
  • python調(diào)用jenkinsAPI構建jenkins,并傳遞參數(shù)的示例

    python調(diào)用jenkinsAPI構建jenkins,并傳遞參數(shù)的示例

    這篇文章主要介紹了python調(diào)用jenkinsAPI構建jenkins,并傳遞參數(shù)的示例,幫助大家更好的理解和學習python,感興趣的朋友可以了解下
    2020-12-12
  • python的依賴管理的實現(xiàn)

    python的依賴管理的實現(xiàn)

    這篇文章主要介紹了python的依賴管理的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-05-05
  • python實現(xiàn)隨機漫步方法和原理

    python實現(xiàn)隨機漫步方法和原理

    在本篇文章里小編給大家整理了關于python如何實現(xiàn)隨機漫步的相關知識點內(nèi)容,需要的朋友們學習下。
    2019-06-06
  • Flask實現(xiàn)swagger在線文檔與接口測試流程詳解

    Flask實現(xiàn)swagger在線文檔與接口測試流程詳解

    Flask是一個使用Python編寫的輕量級Web應用框架。其WSGI工具箱采用 Werkzeug,模板引擎則使用Jinja2。Flask使用 BSD 授權。Flask也被稱為“microframework”,因為它使用簡單的核心,用 extension 增加其他功能,本篇帶你用Flask實現(xiàn)swagger在線文檔與接口測試
    2022-07-07

最新評論

三门县| 和顺县| 日喀则市| 崇义县| 荆门市| 清丰县| 平和县| 浙江省| 新乡县| 云霄县| 望奎县| 台中县| 苗栗县| 廉江市| 怀宁县| 襄垣县| 留坝县| 京山县| 娄烦县| 井研县| 潢川县| 五峰| 万山特区| 长汀县| 武功县| 商河县| 沛县| 崇信县| 财经| 揭东县| 阳原县| 玉山县| 嘉义市| 于都县| 荔波县| 铜山县| 南漳县| 镇康县| 天镇县| 岱山县| 临沂市|