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

Pydantic中Optional 和Union類型的使用

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

簡(jiǎn)介

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

Optional 類型

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

定義可選字段

通過(guò) typing.Optional 可以定義可選字段。實(shí)際使用中,Optional[X] 等價(jià)于 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 省略,默認(rèn)為 None

print(user1)
print(user2)

驗(yàn)證可選字段

Pydantic 會(huì)自動(dòng)處理可選字段的驗(yàn)證。如果字段值為 None 或不提供值,它不會(huì)引發(fā)驗(yàn)證錯(cuò)誤。

from pydantic import ValidationError

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

上述代碼會(huì)因?yàn)?nbsp;age 不能轉(zhuǎn)換為整數(shù)而引發(fā)驗(yàn)證錯(cuò)誤。

Union 類型

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

定義多類型字段

通過(guò) typing.Union 可以定義字段可以接受多個(gè)類型。

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)

驗(yàn)證多類型字段

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

from pydantic import ValidationError

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

上述代碼會(huì)因?yàn)?nbsp;value 不是 str 或 int 而引發(fā)驗(yàn)證錯(cuò)誤。

Optional 和 Union 的組合

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

可選的多類型字段

我們可以使用 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 省略,默認(rèn)為 None

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

驗(yàn)證可選的多類型字段

Pydantic 會(huì)按順序驗(yàn)證 Union 中列出的每個(gè)類型,并允許字段為 None。

from pydantic import ValidationError

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

上述代碼會(huì)因?yàn)?nbsp;discount 不是 int 或 float 而引發(fā)驗(yàn)證錯(cuò)誤。

總結(jié)

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

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

相關(guān)文章

  • Python自制一個(gè)PDF轉(zhuǎn)PNG圖片小工具

    Python自制一個(gè)PDF轉(zhuǎn)PNG圖片小工具

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

    Python通過(guò)OpenPyXL處理Excel的完整教程

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

    Python 解決中文寫(xiě)入Excel時(shí)拋異常的問(wèn)題

    下面小編就為大家分享一篇Python 解決中文寫(xiě)入Excel時(shí)拋異常的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-05-05
  • 二十種Python代碼游戲源代碼分享

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

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

    Python開(kāi)根號(hào)的幾種方式詳解

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

    關(guān)于Python數(shù)據(jù)處理中的None、NULL和NaN的理解與應(yīng)用

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

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

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

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

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

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

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

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

    Flask是一個(gè)使用Python編寫(xiě)的輕量級(jí)Web應(yīng)用框架。其WSGI工具箱采用 Werkzeug,模板引擎則使用Jinja2。Flask使用 BSD 授權(quán)。Flask也被稱為“microframework”,因?yàn)樗褂煤?jiǎn)單的核心,用 extension 增加其他功能,本篇帶你用Flask實(shí)現(xiàn)swagger在線文檔與接口測(cè)試
    2022-07-07

最新評(píng)論

乐陵市| 乐都县| 定结县| 东乡| 顺义区| 盘山县| 孟村| 兰西县| 沅陵县| 安福县| 北票市| 永州市| 阿尔山市| 麟游县| 娄烦县| 肇东市| 陇川县| 濉溪县| 玉溪市| 张北县| 嘉禾县| 镇宁| 姜堰市| 紫阳县| 宣汉县| 文成县| 仁寿县| 南川市| 扶风县| 应城市| 陕西省| 昌江| 福泉市| 新田县| 沈阳市| 开化县| 昌都县| 金沙县| 平湖市| 洪雅县| 大同县|