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