当前位置: 代码迷 >> python >> 有没有一种策略可以使Python 3.5代码向后兼容类型注释?
  详细解决方案

有没有一种策略可以使Python 3.5代码向后兼容类型注释?

热度:33   发布时间:2023-06-13 17:00:47.0

我想在我的开源库中支持新的Python功能。 Python的新类型提示使用户更容易使用我的软件。

但它带来了一个障碍 - 它依赖于一个名为typing的库,用于一些更有趣的类型注释。 Python <3.5中不存在该库。

通常我会使用兼容性库(例如six )来处理它,但是现在还没有支持six typing模块。

另一个可接受的解决方案可能是3to2转换器,它可以剥离不支持的功能。 不幸的是,我还没有看到3.5到3.(x <5)的转换器。

似乎现在唯一可用的替代方法是将我的所有typedef导入包装到try-blocks中,并为旧版本的语言提供假的typedef。 这很丑陋,而不是我想采取我的项目的方式。

有什么建议?

Python 3.5中的类型提示由两部分组成:

  • 提示对象类型的库,称为
  • 注释语法

两者都可以在早期的Python版本中使用,或者可以在尚未支持注释语法的地方使用。

该模块已经 。 所有Python 3版本都支持注释,从3.0开始,请参阅 。 这意味着类型提示代码可以适用于所有广泛使用的Python 3发行版。

对于Python 2.x,您可以使用 ; 这些实际上并没有执行,只有静态分析工具需要能够解析这些。 您仍然会“导入”这些typing模块,但模块从未实际加载,也不需要为存根文件安装。 存根文件具有.pyi扩展名并且.pyi.py对应文件旁边,但包含完整注释,但没有函数体(您应该使用...省略号文字)。

您可以查看 ,了解它在实践中的工作原理; Python类提示PEP很大程度上受到Mypy等工具的启发。