Python中的類型
本文解釋了Python中的類型。
YouTube Video
Python中的類型
typing模組用於在Python中引入類型提示。它最初在Python 3.5中引入,用於提高代碼的可讀性和可維護性。類型提示不會影響代碼的運行,但允許使用IDE和靜態分析工具進行類型檢查。
類型提示的基礎
類型提示通過明確指定函數和變數的類型來澄清代碼意圖。在下面的範例中,為參數和返回值指定了類型。
1def add_numbers(a: int, b: int) -> int:
2 return a + b
3
4result: int = add_numbers(5, 10)
5print(result) # 15在上述代碼中,a和b為整數類型(int),函數的返回值也明確聲明為整數。即使使用類型提示,類型也不會被嚴格強制執行,但如果有類型不匹配,在開發過程中可能會顯示警告。
關鍵類型提示
Python中的typing模組提供了多種類和函數以定義類型提示。以下是一些常見的類型提示列表。
int:整數str:字串float:浮點數bool:布林值List:列表Dict:字典Tuple:元組Set:集合
List 類型
列表型別是使用 List 類別來指定的。您也可以明確指定列表內元素的型別。
1from typing import List
2
3def sum_list(numbers: List[int]) -> int:
4 return sum(numbers)
5
6print(sum_list([1, 2, 3])) # 6在此範例中,列表中的所有元素預期為 int 型別。
Dict 型別
字典型別是使用 Dict 定義的。可以指定鍵和值的型別。
1from typing import Dict
2
3def get_student_age(students: Dict[str, int], name: str) -> int:
4 return students.get(name, 0)
5
6students = {"Alice": 23, "Bob": 19}
7print(get_student_age(students, "Alice")) # 23在此範例中,字典使用 str 作為鍵的型別,int 作為值的型別。
Tuple 型別
元組使用 Tuple 型別來指定。您可以個別指定元組中每個元素的型別。
1from typing import Tuple
2
3def get_person() -> Tuple[str, int]:
4 return "Alice", 30
5
6name, age = get_person()
7print(name, age) # Alice 30在這裡,get_person 函數返回了一個包含字符串和整數的元組。
Union 型別
Union 型別用於明確指示可以接受多種型別。
1from typing import Union
2
3def process_value(value: Union[int, float]) -> float:
4 return value * 2.0
5
6print(process_value(10)) # 20.0
7print(process_value(3.5)) # 7.0在此範例中,process_value 函數接受 int 或 float 作為參數,並返回 float 型別的結果。
Optional 型別
當變數可能為 None 時,使用 Optional 型別。它可以作為 Union[Type, None] 的簡寫。
1from typing import Optional
2
3def greet(name: Optional[str] = None) -> str:
4 if name is None:
5 return "Hello, Guest!"
6 return f"Hello, {name}!"
7
8print(greet()) # Hello, Guest!
9print(greet("Alice")) # Hello, Alice!在此範例中,當 name 未被指定時,其值將被視為 None。
泛型型別
泛型型別是一種用於抽象表示資料結構中所包含元素型別的方法。在 typing 模組中,您可以使用 TypeVar 定義泛型型別。
1from typing import TypeVar, List
2
3T = TypeVar('T')
4
5def get_first_element(elements: List[T]) -> T:
6 return elements[0]
7
8print(get_first_element([1, 2, 3])) # 1
9print(get_first_element(["a", "b", "c"])) # a在此範例中,get_first_element 是一個函數,它返回列表的第一個元素,且不依賴於列表的型別。
型別別名
型別別名是一種透過為複雜的型別定義提供清晰名稱來簡化的方法。
1from typing import List, Tuple
2
3Coordinates = List[Tuple[int, int]]
4
5def get_coordinates() -> Coordinates:
6 return [(0, 0), (1, 1), (2, 2)]
7
8print(get_coordinates()) # [(0, 0), (1, 1), (2, 2)]在此範例中,型別別名 Coordinates 被定義來簡單地表示含有元組的列表型別。
總結
Python 中的 typing 模組對於提高程式碼的可讀性和可維護性非常有用。通過正確使用型別提示,可以幫助防止型別不匹配和錯誤,特別是在大型專案或團隊開發中。型別僅僅是一種開發輔助工具,不會影響執行時的行為,因此能保持程式碼的靈活性。
您可以在我們的 YouTube 頻道上使用 Visual Studio Code 來跟隨上述文章一起學習。 請也查看我們的 YouTube 頻道。