[Python][微進階]型別提示 type hint

更新於 發佈於 閱讀時間約 5 分鐘

在程式開發中,協作合作專案時,利用type hint,可以快速知道函式輸入及輸出的資料型別在後續的維護時也會更加方便及可讀

Type hintsPython 3.5 版本引入的功能,它允許在函數宣告中指定參數和傳回值的類型。Type hints 是一種可選的註解形式,不會影響程式碼的運行,但可以提供給IDE靜態類型檢查工具其他開發者更多的信息,以提高程式碼可讀性可維護性


基本的Python Type hints 範例:

在函式參數和傳回值中使用Type hints:

基本數值型態:

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

在這個例子中,str1str2 都是字串,而函數的傳回類型也是字串。

布林型態:

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 函式不會返回任何值,即它是一個沒有返回值的函式。


Python 3.9 以下

列表型態:

使用 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 類型進行型別註釋ndarrayNumPy 中用於表示多維數組的類型。

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 這樣的型別提示可以讓代碼更清晰地表達預期的數據結構


參考文獻






留言
avatar-img
留言分享你的想法!
avatar-img
螃蟹_crab的沙龍
141會員
253內容數
本業是影像辨識軟體開發,閒暇時間進修AI相關內容,將學習到的內容寫成文章分享。
螃蟹_crab的沙龍的其他內容
2025/04/29
1. 什麼是虛擬環境 (venv)? 虛擬環境就是讓你在同一台電腦上,可以為不同的專案建立「獨立」的 Python 環境,互不干擾。 例如:某個專案用 Dash 3.0.4,另一個用 Dash 4.0,不會互相影響。 2. 如何建立一個新的 venv? 打開終端機 Terminal / C
Thumbnail
2025/04/29
1. 什麼是虛擬環境 (venv)? 虛擬環境就是讓你在同一台電腦上,可以為不同的專案建立「獨立」的 Python 環境,互不干擾。 例如:某個專案用 Dash 3.0.4,另一個用 Dash 4.0,不會互相影響。 2. 如何建立一個新的 venv? 打開終端機 Terminal / C
Thumbnail
2025/04/25
在 Python 中,字典(dict)是非常常用的資料結構,用來儲存 key-value 配對。而在操作字典時,.setdefault() 是一個常被忽略但非常實用的方法。 這篇文章會完整介紹 .setdefault() 的語法、用途、與實務範例,幫助你更有效率地處理字典資料。 什麼是 .se
Thumbnail
2025/04/25
在 Python 中,字典(dict)是非常常用的資料結構,用來儲存 key-value 配對。而在操作字典時,.setdefault() 是一個常被忽略但非常實用的方法。 這篇文章會完整介紹 .setdefault() 的語法、用途、與實務範例,幫助你更有效率地處理字典資料。 什麼是 .se
Thumbnail
2025/04/15
在軟體開發或部署過程中,我們經常需要對多個 .ini 設定檔進行批次修改,例如將某個舊的參數名稱或路徑名稱,替換成新的命名。 這就像記事本的「全部取代」功能,但你不需要一個個打開檔案慢慢點——你可以用 Python 自動完成這些事! 本文將介紹一個 Python 函式:search_and_re
2025/04/15
在軟體開發或部署過程中,我們經常需要對多個 .ini 設定檔進行批次修改,例如將某個舊的參數名稱或路徑名稱,替換成新的命名。 這就像記事本的「全部取代」功能,但你不需要一個個打開檔案慢慢點——你可以用 Python 自動完成這些事! 本文將介紹一個 Python 函式:search_and_re
看更多
你可能也想看
Thumbnail
大家好,我是一名眼科醫師,也是一位孩子的媽 身為眼科醫師的我,我知道視力發展對孩子來說有多關鍵。 每到開學季時,診間便充斥著許多憂心忡忡的家屬。近年來看診中,兒童提早近視、眼睛疲勞的案例明顯增加,除了3C使用過度,最常被忽略的,就是照明品質。 然而作為一位媽媽,孩子能在安全、舒適的環境
Thumbnail
大家好,我是一名眼科醫師,也是一位孩子的媽 身為眼科醫師的我,我知道視力發展對孩子來說有多關鍵。 每到開學季時,診間便充斥著許多憂心忡忡的家屬。近年來看診中,兒童提早近視、眼睛疲勞的案例明顯增加,除了3C使用過度,最常被忽略的,就是照明品質。 然而作為一位媽媽,孩子能在安全、舒適的環境
Thumbnail
我的「媽」呀! 母親節即將到來,vocus 邀請你寫下屬於你的「媽」故事——不管是紀錄爆笑的日常,或是一直想對她表達的感謝,又或者,是你這輩子最想聽她說出的一句話。 也歡迎你曬出合照,分享照片背後的點點滴滴 ♥️ 透過創作,將這份情感表達出來吧!🥹
Thumbnail
我的「媽」呀! 母親節即將到來,vocus 邀請你寫下屬於你的「媽」故事——不管是紀錄爆笑的日常,或是一直想對她表達的感謝,又或者,是你這輩子最想聽她說出的一句話。 也歡迎你曬出合照,分享照片背後的點點滴滴 ♥️ 透過創作,將這份情感表達出來吧!🥹
Thumbnail
在 Python 中,print( ) 函數用於將結果輸出到螢幕上。當你嘗試將不同資料型別(例如字串和數字)混合在一起輸出時,print( )函數無法直接處理這些不同型別的資料,因此你需要先將它們轉換為相同的資料型別。通常,這意味著需要將數字轉換為字串型別,以便與其他字串一同輸出。 雖然我們也可以
Thumbnail
在 Python 中,print( ) 函數用於將結果輸出到螢幕上。當你嘗試將不同資料型別(例如字串和數字)混合在一起輸出時,print( )函數無法直接處理這些不同型別的資料,因此你需要先將它們轉換為相同的資料型別。通常,這意味著需要將數字轉換為字串型別,以便與其他字串一同輸出。 雖然我們也可以
Thumbnail
本章節旨在介紹 TypeScript 的基本資料型別,包括內建型別、型別轉換、自訂型別、元組、集合、陣列、和字典型別。透過理解和使用這些型別,可以提高代碼的可讀性和可維護性。
Thumbnail
本章節旨在介紹 TypeScript 的基本資料型別,包括內建型別、型別轉換、自訂型別、元組、集合、陣列、和字典型別。透過理解和使用這些型別,可以提高代碼的可讀性和可維護性。
Thumbnail
本文介紹了Python中的物件導向程式設計的重要概念,包括類別、繼承、多型、封裝、介面、抽象類別、靜態類別、列舉、委派、Lambda表達式、泛型和反射。每個概念都有對應的程式碼範例來說明其用法和功能。這些概念對於理解和使用Python進行物件導向程式設計至關重要。
Thumbnail
本文介紹了Python中的物件導向程式設計的重要概念,包括類別、繼承、多型、封裝、介面、抽象類別、靜態類別、列舉、委派、Lambda表達式、泛型和反射。每個概念都有對應的程式碼範例來說明其用法和功能。這些概念對於理解和使用Python進行物件導向程式設計至關重要。
Thumbnail
在Python中,我們可以用def關鍵字定義函數,並透過函數名稱呼叫它。函數參數可以是必填、關鍵字、默認或不定長度的類型。return語句負責結束函數並回傳值。全域變數可以在整個程序中使用,而區域變數只能在特定函數內使用。我們還可以在一個文件中定義函數,然後在另一個文件中呼叫它。
Thumbnail
在Python中,我們可以用def關鍵字定義函數,並透過函數名稱呼叫它。函數參數可以是必填、關鍵字、默認或不定長度的類型。return語句負責結束函數並回傳值。全域變數可以在整個程序中使用,而區域變數只能在特定函數內使用。我們還可以在一個文件中定義函數,然後在另一個文件中呼叫它。
Thumbnail
在Python中,import是一個關鍵字,用於將其他模組或套件中的程式碼引入到當前的程式中以供使用。 這個關鍵字允許你在你的程式中使用其他地方定義的變數、函式和類等。 當你使用import時,Python會搜索指定模組或套件的位置,並將其中的程式碼載入到你的程式中,這樣你就可以在程式中使用它們
Thumbnail
在Python中,import是一個關鍵字,用於將其他模組或套件中的程式碼引入到當前的程式中以供使用。 這個關鍵字允許你在你的程式中使用其他地方定義的變數、函式和類等。 當你使用import時,Python會搜索指定模組或套件的位置,並將其中的程式碼載入到你的程式中,這樣你就可以在程式中使用它們
Thumbnail
今天來介紹python的函式 函式在python中是非常重要的一環,因為到了後期,程式會越來越複雜。 而函式可以想成是容易管理的小程式,當我們需要使用時,只需呼叫即可。
Thumbnail
今天來介紹python的函式 函式在python中是非常重要的一環,因為到了後期,程式會越來越複雜。 而函式可以想成是容易管理的小程式,當我們需要使用時,只需呼叫即可。
Thumbnail
f字符串(f-string)在Python 3.6版本引入了新特性,可以更方便地格式化字符串。本文介紹了f-string的基本使用方法,以及表達式、運算符、格式化控制、字典和列表的應用,以及調用方法和函數等。f-string提供了一種更靈活的方式,使你能夠控制字符串的外觀,以滿足不同情況下的需求。
Thumbnail
f字符串(f-string)在Python 3.6版本引入了新特性,可以更方便地格式化字符串。本文介紹了f-string的基本使用方法,以及表達式、運算符、格式化控制、字典和列表的應用,以及調用方法和函數等。f-string提供了一種更靈活的方式,使你能夠控制字符串的外觀,以滿足不同情況下的需求。
Thumbnail
在程式開發中,協作合作專案時,利用type hint,可以快速知道函式輸入及輸出的資料型別,在後續的維護時也會更加方便及可讀。 Type hints 是Python 3.5 版本引入的功能,它允許在函數宣告中指定參數和傳回值的類型。Type hints 是一種可選的註解形式,不會影響程式碼的運行,
Thumbnail
在程式開發中,協作合作專案時,利用type hint,可以快速知道函式輸入及輸出的資料型別,在後續的維護時也會更加方便及可讀。 Type hints 是Python 3.5 版本引入的功能,它允許在函數宣告中指定參數和傳回值的類型。Type hints 是一種可選的註解形式,不會影響程式碼的運行,
Thumbnail
本文介紹了Python中函式引數的*args和**kwargs用法,通過*args處理可變數量的位置引數,通過**kwargs處理可變數量的關鍵字引數。不僅介紹了相應的語法和程式範例,還解釋了它們的順序問題和建議的慣例用法。
Thumbnail
本文介紹了Python中函式引數的*args和**kwargs用法,通過*args處理可變數量的位置引數,通過**kwargs處理可變數量的關鍵字引數。不僅介紹了相應的語法和程式範例,還解釋了它們的順序問題和建議的慣例用法。
Thumbnail
本文將介紹自定函式及應用,利用程式範例解釋為什麼要用到自定函式 自定函式好處當然就是,讓你的程式碼看起來比較簡潔,在重複使用到的程式碼區塊,可以包裝成函式,讓你重複使用它。
Thumbnail
本文將介紹自定函式及應用,利用程式範例解釋為什麼要用到自定函式 自定函式好處當然就是,讓你的程式碼看起來比較簡潔,在重複使用到的程式碼區塊,可以包裝成函式,讓你重複使用它。
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News