Python函數參數中的冒號與箭頭

在一些Python的工程項目中,我們會看到函數參數中會有冒號,有的函數後面會跟着一個箭頭,你可能會疑惑,這些都是什麼東西?

其實函數參數中的冒號是參數的類型建議符,告訴程序員希望傳入的實參的類型函數後面跟着的箭頭是函數返回值的類型建議符,用來說明該函數返回的值是什麼類型

更官方的解釋:此爲type hints,是Python 3.5新加的功能,作用如上所述,官方文檔爲 https://www.python.org/dev/peps/pep-0484/

值得注意的是,類型建議符並非強制規定和檢查,也就是說即使傳入的實際參數與建議參數不符,也不會報錯。我認爲類型建議符的作用更多的體現在軟件工程方面:在多人合作的時候,我們對他人開發的代碼並不熟悉,沒有對類型的解釋說明的話,往往需要花費更多的時間才能看出函數的參數和返回值是什麼類型,有了說明符,可以方便程序員理解函數的輸入與輸出(具體涉及到的工作,比如靜態分析與代碼重構)。

下面我們以一個簡單的函數twoSum爲例,該函數計算的是兩個輸入參數的和:

#!/usr/bin/python3
# -*- coding:utf-8 -*-

def twoSum(num1: int, num2: int=100) -> int:
    sum = num1 + num2
    return sum
    

if __name__ == "__main__":
    print(twoSum.__annotations__)
    print(twoSum(1,2))
    print(twoSum(1))
    print(twoSum('I love ','Arsenal'))
    #print(twoSum('Arsenal'))
{'num1': <class 'int'>, 'num2': <class 'int'>, 'return': <class 'int'>}
3
101
I love Arsenal

 

幾點解釋:

  • 第一行輸出中的__annotations__是函數的保留屬性,保存的是函數聲明中的註釋內容,比如我們使用的對參數"num1","num2"和返回值的建議類型。
  • 第二行輸出是正常用法。
  • 第三行輸出驗證了:註釋內容後可以跟等號"=",意思爲未傳入實參時,該參數獲得的默認值
  • 第四行輸出則驗證了該解釋說明符並非強制檢查,我們傳入了兩個str實參,並不會報錯,而是繼續進行函數中的加法運算。如果傳入的兩個實參無法進行函數中規定的運算,則會正常報錯。

 

參考鏈接:

python函數註釋,參數後面加冒號:,函數後面的箭頭→是什麼?

2 type hints - PEP Doc

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章