python 类型上的partial()?

问题描述 投票:0回答:1

我经常使用类型提示来帮助记录代码,有时当类型签名太复杂并重复使用时,我会像这样给它们起别名:

MyType = Dict[Tuple[int,...], float]  # ex: cluster & score.

Python中有没有一种方法可以参数化类型部分?一个常见的用例是当我想描述返回生成器的函数时。例如,

Generator[int, None, None]
表示法有效,但未使用的
None
细节可以隐藏在新类型中。

类型上是否存在类似

partial
的函数,我们可以“锁定”一些子类型参数?或者也许这可以通过
Generics
实现?从概念上讲,我正在考虑这样的事情:

MyGenType[int] = functools.partial(Generator, None, None) # pseudo code!
python generics type-hinting type-definition
1个回答
1
投票

这样做了:

from typing import Generator, TypeVar

T = TypeVar("T")
MyGenType = Generator[T, None, None]

def fn(n: int) -> MyGenType[str]:
    return (str(_) for _ in range(n))

list(fn(3)) # ['0', '1', '2']
© www.soinside.com 2019 - 2024. All rights reserved.