通过 Python 3.6 变量注释提供向后兼容性
Providing Backwards Compatability with Python 3.6 Variable Annotations
我正在尝试创建一个 python 包(目前不在任何地方)并且我想使用 3.6 python 变量注释,即
foo: int = 5
同时仍然为 Python 3.5 提供支持。
有什么方法可以在 Python 3.5 中提供这些样式的变量注释,或者通过
from __future__ import variable_annotations
或类似。我知道可以使用注释类型注释,但我希望能够使用这种样式。
TLDR:不,您不能在 Python 3.5 及更早版本中使用变量注释。
首先,Python 3.6.0 changelog 报告变量注释是与 3.5 相比的新功能。
其次,PEP 526 is defined as backward compatible. According to PEP 387:
Unless it is going through the deprecation process below, the behavior
of an API must not change between any two consecutive releases.
这包括:
Syntax and behavior of these constructs as defined by the reference
manual
所以 PEP 526 的“fully backwards compatible" just means that Python 3.5 (or to be scrupulous, pre-PEP526) syntax will be working in 3.6.0 without changes: variable annotations are not mandatory.
最后,你提到了"comment type annotations"。所以我就给一个link到PEP 484,它可以用于Python 3.5(这可能对这个问题的一些读者有用)。
我正在尝试创建一个 python 包(目前不在任何地方)并且我想使用 3.6 python 变量注释,即
foo: int = 5
同时仍然为 Python 3.5 提供支持。
有什么方法可以在 Python 3.5 中提供这些样式的变量注释,或者通过
from __future__ import variable_annotations
或类似。我知道可以使用注释类型注释,但我希望能够使用这种样式。
TLDR:不,您不能在 Python 3.5 及更早版本中使用变量注释。
首先,Python 3.6.0 changelog 报告变量注释是与 3.5 相比的新功能。
其次,PEP 526 is defined as backward compatible. According to PEP 387:
Unless it is going through the deprecation process below, the behavior of an API must not change between any two consecutive releases.
这包括:
Syntax and behavior of these constructs as defined by the reference manual
所以 PEP 526 的“fully backwards compatible" just means that Python 3.5 (or to be scrupulous, pre-PEP526) syntax will be working in 3.6.0 without changes: variable annotations are not mandatory.
最后,你提到了"comment type annotations"。所以我就给一个link到PEP 484,它可以用于Python 3.5(这可能对这个问题的一些读者有用)。