Python 泛型
在Python中,泛型是一种机制,可以定义可以在多种类型上操作的函数、类或方法,同时保持类型安全。通过实现泛型,可以编写可重用的代码,可以用于不同的数据类型。它确保提升代码的灵活性和类型的正确性。
在Python中,泛型是使用类型提示来实现的。这个特性是在Python3.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