有没有一种策略可以使Python 3.5代码向后兼容类型注释?
作者:互联网
我想在我的开源库中支持新的Python功能. Python的新类型提示使用户更容易使用我的软件.
但它带来了一个障碍 – 它依赖于一个名为键入的库,用于一些更有趣的类型注释. Python中不存在该库< 3.5. 通常情况下,我会使用兼容性库(例如六个)来处理它,但是现在还没有支持六个类型的打字模块. 另一个可接受的解决方案可能是3to2转换器,它可以剥离不支持的功能.不幸的是,我还没有看到3.5到3.(x <5)的转换器. 似乎现在唯一可用的替代方法是将我的所有typedef导入包装到try-blocks中,并为旧版本的语言提供假的typedef.这很丑陋,而不是我想采取我的项目的方式. 有什么建议?
解决方法:
Python 3.5中的类型提示由两部分组成:
>类型提示对象的库,名为typing
>注释语法
两者都可以在早期的Python版本中使用,或者可以在尚未支持注释语法的地方使用.
该模块已经是backported to Python 3.2 and newer.所有Python 3版本都支持注释,从3.0开始,见PEP 3107.这意味着类型提示代码可以适用于所有广泛使用的Python 3发行版.
对于Python 2.x,您可以使用stub files;这些实际上并没有执行,只有静态分析工具需要能够解析这些.您仍然会“导入”这些输入模块,但模块从未实际加载,也不需要为存根文件安装.存根文件具有.pyi扩展名并且位于其.py对应文件旁边,但包含完整注释,但没有函数体(您应该使用…省略号文字).
你可以看看Mypy stub specifications这个在实践中如何运作; Python类提示PEP很大程度上受到Mypy等工具的启发.
标签:python-3-5,type-hinting,python 来源: https://codeday.me/bug/20190829/1762485.html