Python如何用类型注解指定函数返回值与映射函数输出为同类型
Python实现函数返回值与入参映射函数输出类型一致的方法
不需要将函数封装到带泛型的类中,Python直接支持函数级别的泛型声明,使用TypeVar即可实现和Java泛型完全等价的效果,具体实现方式如下:
实现步骤
- 首先从
typing模块导入所需的类型标注工具,声明泛型变量T,用于指代任意统一类型 - 给函数的参数和返回值标注对应的泛型类型即可
完整代码示例
from typing import Callable, TypeVar # 声明泛型类型变量T,可代表任意类型 T = TypeVar('T') def get_value(mapping_function: Callable[[str], T]) -> T: # 示例业务逻辑:先从数据源获取字符串类型的原始值 raw_value: str = "示例数据源返回的原始字符串" # 执行映射后返回,类型与映射函数输出完全一致 return mapping_function(raw_value)
效果验证
类型检查工具(mypy、pyright等)可以自动根据传入的映射函数推断返回值类型,不需要额外手动标注:
# 示例1:映射函数返回int类型,get_value返回值会被自动识别为int def str_to_int(s: str) -> int: return int(s.strip()) int_result = get_value(str_to_int) # 类型检查器会判定int_result为int类型,调用int相关方法不会报类型错误 # 示例2:映射函数返回bool类型,get_value返回值自动识别为bool bool_result = get_value(lambda s: len(s) > 10) # 类型检查器会判定bool_result为bool类型
内容的提问来源于stack exchange,提问作者Ekos IV
相关产品推荐
相关产品推荐

