pst*_*tix 3 python type-hinting
除了以下方法之外,还有其他方法可以输入相同类型的提示参数:
def foobar(a: int, b: int, c: int, d: str): ...
Run Code Online (Sandbox Code Playgroud)
也许是这样的:
def foobar([a, b, c]: int, d: str): ...
Run Code Online (Sandbox Code Playgroud)
显然是概念性的,但可以减少重复的类型提示
我所知道的唯一方法涉及以某种方式“打包”参数。
由于 var-args 的工作原理,您可以稍微改变顺序并将参数作为 var-args:
def foobar(d: str, *args: int): …
Run Code Online (Sandbox Code Playgroud)
args现在保存a、b、 和c(以及传递的其他内容)。
同样,您可以传入一个列表:
from typing import List
def foobar(args: List[int], d: str): …
Run Code Online (Sandbox Code Playgroud)
这本质上与上面相同。
当然,这两者都存在严重的缺点,即您不再能够静态检查数量;可以说,这比无法静态检查类型更糟糕。
您可以通过使用元组来确保长度来稍微解决这个问题:
from typing import Tuple
def foobar(args: Tuple[int, int, int], d: str): …
Run Code Online (Sandbox Code Playgroud)
但是,当然,这与原始代码一样多的重复(并且需要将参数打包到元组中),因此实际上没有任何好处。
我不知道有什么“安全”的方法可以做到你真正想做的事。