Python - 泛型



在 Python 中,泛型是一种机制,允许你定义可在多种类型上操作同时保持类型安全的函数、类或方法。泛型的实现使得编写可重用代码成为可能,这些代码可用于不同的数据类型。它确保了代码灵活性和类型正确性。

通常,在 Python 编程中,不需要声明变量类型。类型是由赋给它的值动态确定的。Python 的解释器不执行类型检查,因此可能会引发运行时异常。

Python 在 3.5 版本中引入了带有 类型提示 的泛型,允许你指定变量、函数参数和返回值的预期类型。此功能有助于减少运行时错误并提高代码可读性。

泛型通过引入类型变量扩展了类型提示的概念,类型变量表示泛型类型,在使用泛型函数或类时可以将其替换为特定类型。

定义泛型函数

让我们来看一个定义泛型函数的例子:

from typing import List, TypeVar, Generic
T = TypeVar('T')
def reverse(items: List[T]) -> List[T]:
   return items[::-1]

这里,我们定义了一个名为“reverse”的泛型函数。该函数接受一个列表('List[T]')作为参数,并返回相同类型的列表。类型变量“T”表示泛型类型,在使用该函数时将被替换为特定类型。

使用不同数据类型调用泛型函数

reverse() 函数使用不同的数据类型调用:

numbers = [1, 2, 3, 4, 5]
reversed_numbers = reverse(numbers)
print(reversed_numbers)

fruits = ['apple', 'banana', 'cherry']
reversed_fruits = reverse(fruits)
print(reversed_fruits)

它将产生以下输出

[5, 4, 3, 2, 1]
['cherry', 'banana', 'apple']

定义泛型类

泛型类型通常通过在类名后添加类型参数列表来声明。以下示例在泛型类中使用泛型:

from typing import List, TypeVar, Generic
T = TypeVar('T')
class Box(Generic[T]):
   def __init__(self, item: T):
      self.item = item
   def get_item(self) -> T:
      return self.item
Let us create objects of the above generic class with int and str type
box1 = Box(42)
print(box1.get_item())

box2 = Box('Hello')
print(box2.get_item())

它将产生以下输出

42
Hello
广告