如何为返回typing.List[type(el)]的Python函数添加类型提示?
解决方案
要实现让函数返回值的类型提示与输入元素el的类型完全匹配,你需要用到Python的泛型类型提示,核心是用TypeVar来关联输入和返回值的类型。
修改后的兼容版代码(支持Python 3.5+)
import typing from typing import TypeVar, List # 定义一个泛型类型变量,用来占位输入元素的具体类型 T = TypeVar('T') def make_list(el: T) -> List[T]: return [el, el]
简化版代码(Python 3.9+可用)
从Python 3.9开始,标准库的内置容器类型(比如list)支持直接添加类型参数,无需再依赖typing.List,代码会更清爽:
from typing import TypeVar T = TypeVar('T') def make_list(el: T) -> list[T]: return [el, el]
原理说明
这里的TypeVar('T')相当于一个“动态类型占位符”——当你传入具体类型的参数(比如整数123或字符串"test"),Python的类型检查器会自动把T替换为该参数的实际类型,返回值的类型提示也就变成了对应类型的列表(比如List[int]或List[str]),完美实现了你想要的typing.List[type(el)]的效果。
内容的提问来源于stack exchange,提问作者MrJ
相关产品推荐
相关产品推荐

