[英]Type hinting for multiple parameters of same type?
是否有另一種方法來鍵入相同類型的提示參數,而不是:
def foobar(a: int, b: int, c: int, d: str): ...
也許是這樣的:
def foobar([a, b, c]: int, d: str): ...
顯然是概念性的,但可以減少重復類型提示
我所知道的唯一方法涉及以某種方式“打包”參數。
由於 var-args 的工作方式,您可以稍微改變順序並將參數作為 var-args:
def foobar(d: str, *args: int): …
args
現在包含a
、 b
和c
(以及傳遞的任何其他內容)。
同樣,您可以傳入一個列表:
from typing import List
def foobar(args: List[int], d: str): …
這與上面的基本相同。
當然,這兩者都有一個嚴重的缺點,即您不再能夠靜態檢查 arity; 這可以說是比無法靜態檢查類型更糟糕的問題。
您可以通過使用元組來確保長度來溫和地解決這個問題:
from typing import Tuple
def foobar(args: Tuple[int, int, int], d: str): …
但是,當然,這與您的原始代碼有一樣多的重復(並且需要將參數打包到一個元組中),因此實際上沒有任何好處。
我不知道有什么“安全”的方式可以按字面意思做你想做的事。
我認為@Carcigenicate 很好地涵蓋了該主題,但是由於您的關注主要是符號化並且只是想讓它看起來整潔,您可以考慮使用懸掛縮進:
def foobar(a: int,
b: int,
c: int,
d: str):
pass
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.