通过 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(这可能对这个问题的一些读者有用)。