Python type hints 之 Optional,Union
1,前言
? ? ? ? type hint 在pep484加入,我個(gè)人覺(jué)得這種類(lèi)似于類(lèi)型約束的(機(jī)制)有點(diǎn)違背了python簡(jiǎn)單、簡(jiǎn)潔的初衷,在慢慢向c# java 這種強(qiáng)類(lèi)型語(yǔ)言看齊的節(jié)奏。
? ? ? ? 不過(guò)好在不強(qiáng)制使用,個(gè)人覺(jué)得依照規(guī)則編碼也有點(diǎn)好處,
一方面,因?yàn)檩斎胼敵龅念?lèi)型進(jìn)行定義的過(guò)程中,推動(dòng)個(gè)人對(duì)輸入輸出進(jìn)行詳細(xì)的思考,個(gè)人的思路也會(huì)更清晰, 寫(xiě)的函數(shù)不容易飄。
另一方面,當(dāng)代碼量大的時(shí)候,可以借助工具進(jìn)行檢查,提前知道bug。
最后,也起到了docstring的作用,交流的時(shí)候,別人也更容易理解, 過(guò)了很長(zhǎng)時(shí)間自己忘得差不多回過(guò)頭看的時(shí)候,也能很快回憶起來(lái)。
2,type hints 類(lèi)型
? ? ? ? type hints 主要是要指示函數(shù)的輸入和輸出的數(shù)據(jù)類(lèi)型,數(shù)據(jù)類(lèi)型在typing 包中,基本類(lèi)型有str list dict等等,
? ? ? ? 使用示例:? ? ? ?
def hello(name: str) -> None:
? ? print('hello {}'.format(name))
? ? ? type hints 有很多別的類(lèi)型,此處主要說(shuō)Union,Optional, 因?yàn)閷?duì)于python 用到的也比較多
Union 是當(dāng)有多種可能的數(shù)據(jù)類(lèi)型時(shí)使用,比如函數(shù)有可能根據(jù)不同情況有時(shí)返回str或返回list,那么就可以寫(xiě)成Union[list, str]
Optional 是Union的一個(gè)簡(jiǎn)化, 當(dāng) 數(shù)據(jù)類(lèi)型中有可能是None時(shí),比如有可能是str也有可能是None,則Optional[str], 相當(dāng)于Union[str, None]. **注意** 和 函數(shù)有默認(rèn)參數(shù)None有區(qū)別,有區(qū)別,有區(qū)別,不可省略默認(rèn)參數(shù),如下示例:
原始:def func(args = None):
錯(cuò):def func(args:Optional[str]) -> None:
對(duì):def func(args:Optional[str] = None) -> None:
type hints 還可以自定義類(lèi)型等等
---------------------
作者:ypgsh
來(lái)源:CSDN
原文:https://blog.csdn.net/ypgsh/article/details/84992461
版權(quán)聲明:本文為博主原創(chuàng)文章,轉(zhuǎn)載請(qǐng)附上博文鏈接!
總結(jié)
以上是生活随笔為你收集整理的Python type hints 之 Optional,Union的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: pip 指定目录安装
- 下一篇: Python 函数参数有冒号 声明后有-