- 泛型
泛型一种机制, 在 情况下,它允许人们定义函数、类或者方法, 这些函数、类或方法能够在多种各异的数据类型上进行操作, 并且在操作过程中能够始终维系类型安全, 泛型的实现促使编写具备可重用特性的代码成为事实, 而这些可重用代码能够被应用于不同的数据类型, 它确保了代码具备灵活性以及类型正确性。
一般而言, 于编程期间, 无需对变量类型予以声明。其类型是基于赋给它的值而被动态确定的。解释器并不执行类型检查, 所以有可能会引发运行时异常。
于3.5版本里, 引入了带有类型提示的泛型, 它能让你去指定变量的预期类型, 还能指定函数参数的预期类型, 以及返回值的预期类型, 此功能对减少运行时错误有帮助, 并且能提高代码可读性。
泛型借助引入类型变量, 对类型提示的概念予以了扩展, 类型变量所代表的是泛型类型, 在运用泛型函数或者类之际, 能够把它替换成特定类型。
定义泛型函数
让我们来看一个定义泛型函数的例子:
from typing import List, TypeVar, Generic
T = TypeVar('T')
def reverse(items: List[T]) -> List[T]:
return items[::-1]
在这里, 我们定义了一个泛型函数, 它被称作“” , 这个函数会接受一个列表, 也就是 'List' 作为参数, 之后会返回相同类型的列表, 其中类型变量“T”代表泛型类型, 在使用这个函数的时候, 它会被替换为特定类型。
使用不同数据类型调用泛型函数

() 函数使用不同的数据类型调用:
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

590

被折叠的 条评论
为什么被折叠?



