• python-泛型实现,类型检查


    python-泛型实现,类型检查

    在Python中,没有像Java中的泛型那样的明确语法来指定类型参数。Python是一种动态类型语言,可以灵活地处理不同类型的对象。
    然而,如果你希望在Python中添加泛型的注释或提示,以提高代码的可读性和类型安全性,可以使用类型提示。类型提示是一种Python的特殊语法,用于指定变量、函数参数和返回值的类型信息。

    要在Python中添加类型提示,你可以使用typing模块中的泛型类或泛型类型。下面是几个常用的泛型类型的示例:

    List[T]: 表示元素类型为 T 的列表。 Dict[K, V]: 表示键类型为 K,值类型为 V 的字典。 Tuple[T1,
    T2]: 表示包含两个元素,类型分别为 T1 和 T2 的元组。 Optional[T]: 表示类型为 T 或 None 的可选值

    下面是一个示例,展示如何在Python中使用类型提示来指定泛型:

    泛型类型

    from typing import List, Dict, Optional
    
    def process_list(lst: List[int]) -> List[str]:
        result = []
        for num in lst:
            result.append(str(num))
        return result
    
    def process_dict(dct: Dict[str, int]) -> Dict[str, Optional[str]]:
        result = {}
        for key, value in dct.items():
            result[key] = str(value) if value is not None else None
        return result
    
    # 使用泛型类型注释定义列表
    numbers: List[int] = [1, 2, 3, 4]
    # 类型提示指示 process_list 函数接受 List[int] 并返回 List[str]
    result_numbers: List[str] = process_list(numbers)
    print(result_numbers)  # 输出: ['1', '2', '3', '4']
    
    # 使用泛型类型注释定义字典
    scores: Dict[str, int] = {"Alice": 85, "Bob": 92, "Charlie": 78}
    # 类型提示指示 process_dict 函数接受 Dict[str, int] 并返回 Dict[str, Optional[str]]
    result_scores: Dict[str, Optional[str]] = process_dict(scores)
    print(result_scores)  # 输出: {'Alice': '85', 'Bob': '92', 'Charlie': '78'}
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25

    泛型类

    from typing import TypeVar
    
    T = TypeVar('T')  # 创建泛型类型变量 T
    
    class Box(Generic[T]):
        def __init__(self, item: T):
            self.item = item
    
        def get_item(self) -> T:
            return self.item
    
    # 创建一个装有整数的 Box
    int_box = Box(5)
    item = int_box.get_item()
    print(item)  # 输出: 5
    print(type(item))  # 输出: 
    
    # 创建一个装有字符串的 Box
    str_box = Box("Hello")
    item = str_box.get_item()
    print(item)  # 输出: Hello
    print(type(item))  # 输出: 
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22

    请注意,在Python中,类型提示只是一种静态分析工具,而不会在运行时执行类型检查。因此,它们不会阻止你在运行时传递不匹配的类型。类型提示主要用于提供开发工具、编辑器和静态分析工具使用的类型信息,以帮助你编写更具可读性和可维护性的代码。

  • 相关阅读:
    机器人控制器编程实践指导书旧版-实践五 数字舵机(执行器)
    C++---AVL树
    Mybatis 插入、修改、删除
    《痞子衡嵌入式半月刊》 第 58 期
    会议OA项目之会议排座功能&&会议送审的实现
    React组件库设计 | 关于我一边写Concis一边给字节组件库arco design提pr的分享
    [Typescript]基础篇之 String 对象
    一起Talk Android吧(第四百一十四回:使用三角函数绘制正弦波的优化)
    NFS客户端配置
    实用拜占庭协议(PBFT 99)
  • 原文地址:https://blog.csdn.net/weixin_45904404/article/details/134468843