Python walrus 运算符可以用于类型提示泛型函数吗?

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

假设我想在 3.12 之前的 python 中输入一个泛型函数,当引入新的参数语法时:

def max[T](args: Iterable[T]) -> T:
    ...

然后我可以选择使用字符串类型提示:

def max(args: Iterable["T"]) -> "T":
    ...

或输入变量:


T = TypeVar("T")

def max(args: Iterable[T]) -> T:
    ...

我更喜欢后一种方法,但是引入额外的全局变量绝对是一个缺点。我决定将泛型类型提示与海象运算符结合起来,如下所示:


def max(args: Iterable[T := TypeVar("T")]) -> T:
    ...


def max(args: Iterable[T := int | float]) -> T:
    ...

这样的代码运行时没有错误,但某些类型库无法识别此语法。编写这样的代码有什么缺点?您会推荐哪种泛型类型提示方法?

python python-3.x type-hinting
1个回答
0
投票
  • 只要类型系统一直按照它的方式发展(为了最好!)
  • 当您无法控制代码运行/签入的环境时(例如分布式团队)

我会选择与现有工具兼容:这会给你的同事带来很多惊喜。所以:类型提示中没有海象:)。

© www.soinside.com 2019 - 2024. All rights reserved.