Python - typing 模塊 —— Optional


前言

typing 是在 python 3.5 才有的模塊

 

前置學習

Python 類型提示:https://www.cnblogs.com/poloyy/p/15145380.html

 

常用類型提示

https://www.cnblogs.com/poloyy/p/15150315.html

 

類型別名

https://www.cnblogs.com/poloyy/p/15153883.html 

 

NewType

https://www.cnblogs.com/poloyy/p/15153886.html

 

Callable

https://www.cnblogs.com/poloyy/p/15154008.html

 

TypeVar 泛型

https://www.cnblogs.com/poloyy/p/15154196.html

 

Any Type

https://www.cnblogs.com/poloyy/p/15158613.html

 

Union

https://www.cnblogs.com/poloyy/p/15170066.html

 

Optional

可選類型

 

和默認參數有什么不一樣

  • 官方原話:可選參數具有默認值,具有默認值的可選參數不需要在其類型批注上使用 Optional,因為它是可選的
  • 不過 Optional 和默認參數其實沒啥實質上的區別,只是寫法不同
  • 使用 Optional 是為了讓 IDE 識別到該參數有一個類型提示,可以傳指定的類型和 None,且參數是可選非必傳的
# 可選參數
def foo(arg: int = 0) -> None:
    ...


# 不傳 arg 默認取 0
foo()

 

重點

  • Optional[int] 等價於 Union[int, None]
  • 意味着:既可以傳指定的類型 int,也可以傳 None

 

實際栗子

def foo_func(arg: Optional[int] = None):
    print(arg)


foo_func()
foo_func(1)


# 輸出結果
None
1

 

使用默認參數的寫法

def foo_func(arg: int = None):
    print(arg)


foo_func()
foo_func(1)


# 輸出結果
None
1

這種寫法,Pycharm 並不會 warning

 

重點

Optional[] 里面只能寫一個數據類型

# 正確
Optional[str]
Optional[List[str]]
Optional[Dict[str, Any]]

# 錯誤
Optional[str, int]
Optional[Union[str, int, float]]

 

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM