11.1 无限数量的参数
在 Python 中,函數可以設計成接收無限數量的參數。這是通過傳入的參數達成的
透過 *args
用於一般參數和 **kwargs
用於
具名參數。
使用 *args
*args
允許函數接收任意數量的位置參數,函數會將其視為元組。
使用範例:
def print_all(*args):
for item in args:
print(item)
print_all(1, 'apple', True) # 輸出 1, apple 和 True.
變數 args
會包含傳遞到函數的所有參數的元組。
使用 **kwargs
**kwargs
的運作方式類似於 *args
,但用於
具名參數,這些參數以字典形式表示。這允許
函數接收任意數量的具名參數:
def print_named_items(**kwargs):
for key, value in kwargs.items():
print(f"{key}: {value}")
print_named_items(fruit='apple', number=1) # 輸出 fruit: apple 和 number: 1
這些機制使函數極具靈活性,並在參數數量未知的情況下非常有用,例如,在開發 API 或事件處理功能時。
我們會稍後更詳細地討論這兩種情況,但你應該知道, 在 Python 中,函數內可以非常容易地訪問所有 傳遞給它的參數。而且可以向函數傳遞任何你想要的東西。
11.2 指定類型
如你所知,Python 中的變數沒有預先指定的類型。任何 變數都可以賦予任何類型的值,並且在下一行 賦予新類型的值等等。
這對小型程式來說非常方便,但對大型程式則不然。 當程式非常大,函數數量達上千時,程式設計者無法記住 到底需要傳遞什麼樣的數據到函數中以及以何種順序。
使用靜態類型的語言中,IDE 會主動提示程式設計者需要傳遞的 參數及其類型。然而,Python 是一種動態類型的語言,缺乏此類提示機制。
因此,Python 的設計者發明了一種稱為
type hinting
的機制。這些類似於變數類型,但更像是
建議而不是強制類型。指定的類型不會帶來任何限制。
類型提示於 Python 3.5 中引入並因 PEP 484 標準而流行。這是一種機制,允許程式設計者定義 變數、參數和函數返回值的預期類型。
雖然 Python 仍然是一種動態類型的語言,但類型提示增加了代碼的清晰度,並支持靜態類型檢查。類型提示範例:
def add_numbers(a: int, b: int) -> int:
return a + b
變數的類型通過 冒號 指定,而函數返回結果的類型 通過 箭頭 指定。
類型提示的好處:
- 改進文檔: 明確的類型指定使代碼自我文檔化。
- 更好的自動補全: 代碼編輯器可以使用類型信息來改善自動補全。
- 幫助除錯: 靜態類型檢查可以在運行程式前發現潛在錯誤。
類型工具
Python 本身不會對聲明的變數類型作出反應。相反,Python 擁有一個特殊的工具 — mypy — 是一個常用的 靜態類型分析器,它有助於查找使用類型提示的代碼中的錯誤。
GO TO FULL VERSION