跳至主要內容

python泛型

pptg大约 2 分钟

1. 什么是泛型

泛型编程允许我们编写与特定类型无关的代码,提高代码的复用性和类型安全性。在Python中,这主要通过TypeVar来实现,它可以创建类型变量,在函数、类或方法中作为占位符类型使用

TypewVar的作用

  • 创建类型变量:定义可以在多个位置使用的通用类型
  • 保持类型一致性:确保相关参数或返回值具有相同的类型
  • 支持复杂类型约束:可以限制类型变量的可能取值
无约束,可以是任何类型
T = TypeVar('T')
U = TypeVar('U')
V = TypeVar('V')

2. 常见问题

  1. TypeVar和Union有什么区别
  • TypeVar:表示"某个特定但未知的类型",用于保持类型一致性。比如def process(a: T, b: T) -> T确保a、b和返回值是相同类型。
  • Union:表示"可以是多种类型中的任何一种",比如Union[int, str]表示可以是int或str,但不要求相关参数类型一致。
  1. 泛型在运行时还存在吗?Python是如何处理泛型类型信息的?
  • Python的泛型主要是静态类型检查工具,在运行时类型信息会被擦除(type erasure)。Box[int]() == Box[str]() # 在运行时是True