簡體   English   中英

對多個相同類型的參數進行類型提示?

[英]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現在包含abc (以及傳遞的任何其他內容)。

同樣,您可以傳入一個列表:

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM