gpt4 book ai didi

python - 在 Python 类型提示中使用类型库类与类型相比有什么好处?

转载 作者:行者123 更新时间:2023-12-03 19:49:10 25 4
gpt4 key购买 nike

我开始学习 Python 中的类型提示,以方便将来将代码从 Python 移植到 C。我想知道直接在类型提示中使用类型与使用 typing 模块中定义的类之间有什么区别(如果有的话) .

例如,两者的区别

def somefn(a: list[int]) -> tuple[str, int]:
...


from typing import List, Tuple

def somefn(a: List[int]) -> Tuple[str, int]:
...

看起来像 UnionAnyCallableIterable 之类的类会很有用,但是我不清楚在 python 中已经作为关键字存在的数据类型的类的实用性。

最佳答案

它对于编写可以合法评估的注释很有用; list[int]如果您尝试实际运行它会爆炸,而 typing.List[int]返回一个新的泛型类型,它知道容器和内容的类型。这在 type aliases 的情况下尤其重要。 ,其中泛型的专用版本在顶层定义,然后作为注释进一步重用:

Vector = List[float]
def scale(scalar: float, vector: Vector) -> Vector:
...
是合法的,而:
Vector = list[float]
def scale(scalar: float, vector: Vector) -> Vector:
...
在你脸上炸开。您会注意到非容器/泛型类型通常没有 typing type (像 Text 这样的异常(exception)是为了移植问题),因为类型别名只会将它们用作“叶”类型,而不是根或分支类型。
更新:从 3.9 开始, the standard collections can serve as type hints ,所以 typing类型不是绝对必要的;如果您愿意,您可以继续使用它们(对于必须在 3.9 之前的 Python 上运行的代码是必需的),但如果您可以依赖 3.9+,则没有必要。

关于python - 在 Python 类型提示中使用类型库类与类型相比有什么好处?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47683500/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com