Python如何基于函数返回值创建类型?存根类型无法导入问题
解决自定义类型存根无法导入类型的问题
方法一:利用ReturnType直接基于函数返回值标注
Python的typing模块(Python 3.10+也可使用types模块)提供了ReturnType类型,能直接从函数推导其返回类型,无需导入存根中定义的具体类型,完全满足静态类型检查(Pylance)的需求。
示例代码:
from typing import ReturnType # 导入第三方库的函数 from your_third_party_lib import id_info def some_func(idInfo: ReturnType[id_info]): pass
如果需要的是返回类型中去掉Optional的实际类型(即IdInfoTuple而非Optional[IdInfoTuple]),可以结合get_args提取:
from typing import ReturnType, get_args from your_third_party_lib import id_info # 静态检查阶段Pylance能正确识别该类型 IdInfoType = get_args(ReturnType[id_info])[0] def some_func(idInfo: IdInfoType): pass
方法二:修复存根文件的导入问题
如果存根文件无法被识别,可能是路径配置问题:
- 确保存根文件命名与第三方库模块名一致(比如第三方库是
foo,存根文件为foo.pyi) - 将存根文件所在目录添加到
PYTHONPATH,或者在项目根目录创建pyrightconfig.json,配置stubPath指向存根目录:
{ "stubPath": "./typings" }
配置完成后即可直接导入存根中的类型:
from your_third_party_lib import IdInfoTuple def some_func(idInfo: IdInfoTuple): pass
内容的提问来源于stack exchange,提问作者Mohammad Hossein Amri
相关产品推荐
相关产品推荐

