Python - 泛型


在 Python 中,泛型是一种机制,您可以使用它来定义可以对多种类型进行操作同时保持类型安全的函数、类或方法。通过实现泛型,可以编写可与不同数据类型一起使用的可重用代码。它确保提高代码灵活性和类型正确性。

Python 中的泛型是使用类型提示来实现的。此功能是在 Python 3.5 版本以后引入的。

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

Python 的新类型提示功能有助于提示用户要传递的参数的预期类型。

类型提示允许您指定变量、函数参数和返回值的预期类型。泛型通过引入类型变量来扩展此功能,类型变量表示在使用泛型函数或类时可以用特定类型替换的泛型类型。

实施例1

让我们看一下下面定义通用函数的示例 -

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

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

实施例2

使用不同的数据类型调用函数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']

实施例3

以下示例使用泛型和泛型类 -

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