使用Python 3.6变量注释提供向后兼容性

Mod*_*mat 7 python backwards-compatibility typechecking python-3.6

我正在尝试创建一个python包(目前不在任何地方),我想使用3.6 python变量注释,即

foo: int = 5
Run Code Online (Sandbox Code Playgroud)

同时仍然提供对Python 3.5的支持.

有没有办法在Python 3.5中提供这些样式的变量注释,或者通过

from __future__ import variable_annotations
Run Code Online (Sandbox Code Playgroud)

或类似的.我知道可以使用注释类型注释,但我希望能够使用这种风格.

Eug*_*ako 6

TLDR:不,你不能在Python 3.5及更早版本中使用变量注释.

首先,Python 3.6.0 changelog报告变量注释是一个与3.5相比的新功能.

其次,PEP 526被定义为向后兼容.根据PEP 387:

除非经过下面的弃用过程,否则API的行为不得在任何两个连续版本之间发生变化.

这包括:

参考手册中定义的这些结构的语法和行为

所以PEP 526的" 完全向后兼容 "只意味着Python 3.5(或者是一丝不苟,PEP526之前的)语法将在3.6.0中运行而不会发生变化:变量注释不是强制性的.

最后,您提到了"注释类型注释".所以我将给出一个PEP 484的链接,它可用于Python 3.5(对于这个问题的一些读者可能会有用).