Python核心庫Literal的具體使用
from typing import Literal 是 Python 3.8+ 的標(biāo)準(zhǔn)庫導(dǎo)入,它引入了一個“字面量類型”(Literal)的概念,用來把類型檢查精確到具體的值,而不僅僅是“str / int / bool”這類寬泛類型。
1.基礎(chǔ)語法
from typing import Literal Mode = Literal["auto", "none", "required"] # 變量 Mode 只能是字符串 "auto"、"none" 或 "required",傳別的值就報錯。
2.在函數(shù)簽名里怎么用
def set_tool_choice(mode: Literal["auto", "none", "required"]) -> None:
...
set_tool_choice("auto") # ? 通過
set_tool_choice("required") # ? 通過
set_tool_choice("REQUIRED") # ? 大小寫不一致,靜態(tài)檢查器會標(biāo)紅
3.運(yùn)行時行動
Literal 本身不會在運(yùn)行時攔截非法值;它的威力體現(xiàn)在寫代碼階段就能發(fā)現(xiàn)拼寫錯誤、避免“魔法字符串”滿天飛。
如果你需要運(yùn)行期也校驗(yàn),可以搭配 pydantic 或 enum:
from pydantic import BaseModel, Field
class Request(BaseModel):
tool_choice: Literal["auto", "none", "required"] = "auto"
4.與 Union 區(qū)別
# 舊寫法,寬泛 Mode = Union[str, int] # 任何 str / int 都合法 # 新寫法,精確 Mode = Literal["auto", "none", "required"] # 只有這三個字符串合法
一句話總結(jié)
Literal 就是“把允許的值寫進(jìn)類型系統(tǒng)”,讓 IDE 和靜態(tài)檢查器幫你提前發(fā)現(xiàn)手滑拼錯、傳錯參數(shù),寫接口、寫配置枚舉時特別香。
到此這篇關(guān)于Python核心庫Literal的具體使用的文章就介紹到這了,更多相關(guān)Python核心庫Literal內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Pytorch中的backward()多個loss函數(shù)用法
這篇文章主要介紹了Pytorch中的backward()多個loss函數(shù)用法,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-05-05
tensorflow 輸出權(quán)重到csv或txt的實(shí)例
今天小編就為大家分享一篇tensorflow 輸出權(quán)重到csv或txt的實(shí)例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-06-06
Python中shape[0]、shape[1]和shape[-1]分別的意思詳解(附代碼)
剛開始使用python做東西,總是不太理解矩陣、數(shù)組相關(guān)的問題,所以在此記錄shape方面的總結(jié),下面這篇文章主要給大家介紹了關(guān)于Python中shape[0]、shape[1]和shape[-1]分別是什么意思的相關(guān)資料,需要的朋友可以參考下2022-11-11
從基礎(chǔ)到高級應(yīng)用詳解Python網(wǎng)絡(luò)通信的完整指南
Python在網(wǎng)絡(luò)編程領(lǐng)域展現(xiàn)出了強(qiáng)大的versatility和效率,從底層的套接字編程到高級的異步框架,Python提供了豐富的工具和庫來滿足各種網(wǎng)絡(luò)通信需求,通過本文我們不僅可以掌握基礎(chǔ)的TCP/UDP通信,還能學(xué)習(xí)HTTP、WebSocket等協(xié)議的應(yīng)用,感興趣的小伙伴可以了解下2026-05-05
python編程進(jìn)階之異常處理用法實(shí)例分析
這篇文章主要介紹了python編程進(jìn)階之異常處理用法,結(jié)合實(shí)例形式分析了python異常捕獲、處理相關(guān)語句、使用技巧與操作注意事項(xiàng),需要的朋友可以參考下2020-02-02
使用pyqt5 實(shí)現(xiàn)ComboBox的鼠標(biāo)點(diǎn)擊觸發(fā)事件
這篇文章主要介紹了使用pyqt5 實(shí)現(xiàn)ComboBox的鼠標(biāo)點(diǎn)擊觸發(fā)事件,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-03-03
Django中實(shí)現(xiàn)點(diǎn)擊圖片鏈接強(qiáng)制直接下載的方法
這篇文章主要介紹了Django中實(shí)現(xiàn)點(diǎn)擊圖片鏈接強(qiáng)制直接下載的方法,涉及Python操作圖片的相關(guān)技巧,非常具有實(shí)用價值,需要的朋友可以參考下2015-05-05

