在程式開發中,協作合作專案時,利用type hint,可以快速知道函式輸入及輸出的資料型別,在後續的維護時也會更加方便及可讀。
Type hints
是Python 3.5 版本引入的功能,它允許在函數宣告中指定參數和傳回值的類型。Type hints 是一種可選的註解形式,不會影響程式碼的運行,但可以提供給IDE、靜態類型檢查工具和其他開發者更多的信息,以提高程式碼的可讀性和可維護性。
基本數值型態:
def add_numbers(x: int, y: float) -> float:
return x + y
在這個例子中,x
是一個整數,y
是一個浮點數,而函式的傳回類型被註釋為 float
。
字串型態:
def merge_strings(str1: str, str2: str) -> str:
return str1 + str2
在這個例子中,str1
和 str2
都是字串,而函數的傳回類型也是字串。
布林型態:
def is_positive(number: int) -> bool:
return number > 0
在這個例子中,number
是一個整數,而函數的傳回類型被註釋為 bool
。
使用 Any
作為函數參數或返回值的型別:
在型別提示(Type hint)中,Any
是一個特殊的型別,表示任意類型。
當你不確定一個變數的確切型別時,可以使用 Any
。但要注意,使用 Any
會失去靜態型別檢查的優勢。
from typing import Any
def process_data(data: Any) -> Any:
# 執行一些處理操作
return data
result: Any = process_data("Hello, World!")
print(result)
在這個例子中,data: Any
表示 process_data
函數的參數 data
可以是任意型別,而 -> Any
表示該函數返回的結果也可以是任意型別。
-> None
來表示一個函數沒有返回任何值:使用 -> None
的情況通常包括:
def log_message(message: str) -> None:
# 將消息記錄到日誌或執行其他操作
print(f"Log: {message}")
# 呼叫函數
log_message("This is a log message")
在這個例子中,-> None
表示 log_message
函式不會返回任何值,即它是一個沒有返回值的函式。
列表型態:
使用 typing 模組的 List 進行表達:
from typing import List
def process_numbers(numbers: List[int]) -> List[float]:
return [float(num) for num in numbers]
在這個例子中,numbers
是一個整數列表,而函數的傳回類型是一個浮點數列表。
字典型態:
使用 typing 模組的 Dict進行表達:
from typing import Dict
def create_person(name: str, age: int) -> Dict[str, Union[str, int]]:
return {'name': name, 'age': age}
在這個例子中,create_person
函數的傳回類型是一個包含字串鍵和混合字串、整數值的字典。
元組型態:
使用 typing 模組的 Tuple進行表達:
from typing import Tuple
def split_name(full_name: str) -> Tuple[str, str]:
first, last = full_name.split()
return first, last
這個例子中,split_name
函數的傳回類型是一個包含兩個字串的元組。
這些 Type hints 可以在開發過程中提供更多的資訊。
可以使用 NumPy 提供的 ndarray
類型進行型別註釋。ndarray
是 NumPy 中用於表示多維數組的類型。
ndarray
進行型別註釋的例子:import numpy as np
def process_array(arr: np.ndarray) -> np.ndarray:
result = arr * 2
return result
# 創建一個 NumPy 數組
input_array = np.array([1, 2, 3])
# 呼叫函數
output_array = process_array(input_array)
print(output_array)
在這個例子中,arr: np.ndarray
表示 process_array
函數的參數 arr
的型別是 NumPy 的 ndarray
。
同樣地,-> np.ndarray
表示該函數將返回一個 NumPy 的 ndarray
。
使用 np.ndarray
這樣的型別提示可以讓代碼更清晰地表達預期的數據結構