這個被忽略的細節,是編寫優秀 Python 代碼的必經之路
某個操作在Python編寫代碼中是可選的,意味著它不是必須的。但要想寫出好的Python代碼,你就必須這樣做。這就是 Python 中的類型提示。
圖片
Python 中數據類型的問題
Python是一種動態類型編程語言,變量的類型是在運行時分配的,無需在賦值之前定義特定類型。
a = 5
變量 a 被賦值為 5,在此之前,無需聲明 a 存儲整數,直接將 5 賦值給 a。
def add(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 也應該是一個整數
- 函數的返回值也應該是整數
類型提示并非強制數據類型,而是為了提示而存在的,這一點需要注意。
def add(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
變量類型提示
def avg(a:int, b:int) -> float:
return (a+b)/2
函數類型提示
- a和 b應為整數
- 函數應返回浮點數值
復雜類型的類型提示
但如果我們有一個整數列表呢?不用擔心,內置的 typing 模塊提供了一些有用的類型提示功能。
from typing import List
def average(numbers: List[int]) -> float:
return sum(numbers)/len(numbers)
numbers 應是一個整數列表。
from typing import Dict
def count(d: Dict[str, int]) -> int:
# stuff
d 應該是一個字典,其中鍵是字符串,值是整數。
class Dog:
pass
from typing import List
def magic(dogs: List[Dog]) -> int:
# stuff
dogs 應該是一個包含自定義 dog 對象的列表。
寫在最后
掌握類型提示并不困難,但它可以提高代碼的可讀性。在編寫優秀的Python代碼時,使用類型提示是至關重要的,特別是在開發大型企業應用程序并需要與其他開發人員合作時。