在Python中,有這樣一個語法,它
是可選的,不是必須這麽寫,但卻能顯著提升你的程式碼品質。
這就是 Python 中的型別提示(Type Hints)。
Python 中數據型別的問題
Python是一種動態型別程式語言,變量的型別是在執行分時配的,無需在賦值之前定義特定型別。
a = 5
變量
a
被賦值為 5,在此之前,無需聲明
a
儲存整數,直接將 5 賦值給
a
。
defadd(a, b):
return a+b
print(add(4, 5)) # 9
print(add(4.0, 5.0)) # 9.0
print(add('hi', 'world')) # hiworld
print(add([1,2], [3,4])) # [1, 2, 3, 4]
add
接收兩個變量
a
和
b
並返回
a+b
。但
a
和
b
應該是什麽數據型別呢?
如果我們輸入整數,就會得到一個整數
如果傳入浮點數,我們得到一個浮點數
如果傳入字串,我們得到一個字串
如果我們傳入列表,我們得到一個列表
Python並不在乎你傳入
a
和
b
的參數。如果出現錯誤,你需要自己解決。盡管如此,型別提示可能會有所幫助。
型別提示介紹
在 Python 中,型別提示是可選的。如果不使用它們,Python 也能正常執行。然而,對於其他開發者來說,型別提示能讓我們的程式碼更易讀。
def add(a: int, b: int) -> int:
return a + b
在
a
和
b
後面加上
: int
,在函式結尾
)
後面加上
-> int
是型別提示,指示函式的參數和返回型別。
a
應該是整數
b
也應該是一個整數
函式的返回值也應該是整數
型別提示並非強制數據型別,而是為了提示而存在的,這一點需要註意。
defadd(a: int, b: int) -> int:
return a + b
print(add(4, 5)) # 9
print(add(4.0, 5.0)) # 9.0
print(add('hi', 'world')) # hiworld
我們可以在
a
和
b
中傳遞浮點數或字串,Python 不限制,允許程式碼執行。型別提示的主要目的是指導其他開發者閱讀我們的程式碼時,明確數據型別應當為何。
型別提示的一些優勢
開發人員能夠迅速確定函式或方法應使用的數據型別
其他開發人員能夠快速了解函式或方法應返回的數據型別
減少了變量數據型別的猜測和確認的時間
提高了程式碼的整體可讀性
盡管型別提示是可選的,但它是編寫優秀可讀程式碼的必備條件。
雖然僅僅使用型別提示並不能讓程式碼變得優秀
基礎型別提示
a: int = 5
# a should be an integer
變量型別提示
defavg(a:int, b:int) -> float:
return (a+b)/2
函式型別提示
a
和
b
應為整數
函式應返回浮點數值
復雜型別的型別提示
但如果我們有一個整數列表呢?不用擔心,內建的
typing
模組提供了一些有用的型別提示功能。
from typing import List
defaverage(numbers: List[int]) -> float:
return sum(numbers)/len(numbers)
numbers
應是一個整數列表。
from typing import Dict
defcount(d: Dict[str, int]) -> int:
# stuff
d
應該是一個字典,其中鍵是字串,值是整數。
classDog:
pass
from typing import List
defmagic(dogs: List[Dog]) -> int:
# stuff
dogs
應該是一個包含自訂
dog
物件的列表。
寫在最後
掌握型別提示並不困難,但它可以提高程式碼的可讀性。在編寫優秀的Python程式碼時,使用型別提示是至關重要的,特別是在開發大型企業應用程式並需要與其他開發人員合作時。
Crossin的新書【 碼上行動:用ChatGPT學會Python編程 】已經上市了。 本書以ChatGPT為輔助,系統全面地講解了如何掌握Python編程,適合Python零基礎入門的讀者學習。
購買後可加入讀者交流群,Crossin為你開啟陪讀模式,解答你在閱讀本書時的一切疑問。
Crossin的其他書籍:
添加微信 crossin123 ,加入編程教室共同學習 ~
感謝 轉發 和 點贊 的各位~