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
版權聲明:本文為博主原創文章,轉載請附上博文鏈接!