看到一些**在定義函式時,在def那一行後面會加乙個-> 。它有個專門的名詞叫type hint,即型別提示。
官方**:
比如
def add(a:int, b:int) ->int:這個表示並沒有多麼的神奇,意思是:告訴你期待的輸入型別和輸出型別。上面**期待的型別為int。return a+b
其實就是變數型別的動態定義和靜態定義的區別。同樣乙個函式可以不加->表示動態定義和加->表示靜態定義。
對於上面左邊函式,對n的資料型別不一定為int,也可以為float等等。。而右邊限定了只能int。
這就是動靜態的區別。
我試著尋找這兩者的區別和各自優勢。有以下發現:
1. 將動態型別函式改為靜態型別函式並不能使計算加快;
2. 就算你靜態限定了int,輸入為float的時候也不會報錯,輸出也不會變成期待的int型別。所以在使用上,動靜態型別並沒有區別。
那麼這個type hint看起來是比較雞肋。
它的用處有以下:
1. 增加**可讀性;
2. 比較容易用其他語言改寫。
例子:
#!/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'))
3101i love arsenal幾點解釋:
python中的型別提示 定義函式時加入箭頭
偶爾看到一些 在定義函式時,在def那一行後面會加乙個 這個玩意兒有個專門的名詞叫type hint,即型別提示。官方 比如 def add a int,b int int return a b 這個表示並沒有多麼的神奇,意思是 告訴你期待的輸入型別和輸出型別。上面 期待的型別為int。其實就是變數...
python型別提示
一 型別提示的好處 1 增強 的可讀性 2 ide中 提示 3 靜態 檢查 第三方庫 二 ide中 中提示功能 1 為引數與返回資料指定型別 def greeting name str str str 返回值也可以 return hello name.split 指定之後就可以呼叫str的方法 gr...
陣列型別 typedef定義的陣列型別的函式呼叫
typedef 定義陣列型別 如下 vs2013 不能實現陣列傳遞 v1.0 typedef unsigned char elemtype 6 int return elemtype p p a return 1 main 用typedef 定義的陣列型別來定義指標 elemtype p 等價於ty...