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

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

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

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

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

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

#!/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

 

幾點解釋:blog

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

 

參考連接:utf-8

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

2 type hints - PEP Doc文檔

相關文章
相關標籤/搜索