在谈到^{
from collections.abc import Sequence
from typing import TypeVar
T = TypeVar('T') # Declare type variable
def first(l: Sequence[T]) -> T: # Generic function
return l[0]
有人能解释一下TypeVar
在这种情况下做了什么吗?例如,如果它可以是任何东西,为什么不给它一个值Any
?如果它受到约束,为什么不给它一个Union
值呢?换句话说,使用TypeVar(...)
有什么用处
我想在回顾上面的内容时,它是在某类子元素的元素?例如,它可以是:
[{set1}, {set2}, {set3}, ...]
这种类型是Sequence[set] -> set
但是像这样的事情:
[1, 2, 3, ...]
将具有类型Sequence[int] -> int
。除了“iterable中的项目”之外,还有其他用途吗
本上下文中
TypeVar
的目的是说明函数返回与参数类型相关的特定类型例如,如果您这样做了:
您将得到一个错误,因为在这个表达式中
T
被绑定到类型int
,因此您将得到一个关于添加int
和str
的错误如果像您描述的那样用
Any
类型注释first
,这不会产生mypy错误(因此在运行时会得到一个TypeError
),因为first
的返回值总是Any
有关如何使用typevars的更多示例,请参见关于泛型的mypy文档:https://mypy.readthedocs.io/en/stable/generics.html
相关问题 更多 >
编程相关推荐