Python doc __future__
在python doc about __future__
中,有一个表格显示注解在3.7.0b1中是“可选的”,在4.0中是“强制的”,但是我仍然可以在3.8.2中使用注解,而不需要导入注解,那么它有什么用呢?
>>> def add_int(a:int, b:int) -> int:
... return a + b
>>> add_int.__annotations__
{'a': <class 'int'>, 'b': <class 'int'>, 'return': <class 'int'>}
我怀疑我没有清楚地理解这里“可选”和“强制”的含义
2条答案
按热度按时间dxpyg8gm1#
Mandatory是一个有趣的单词选择,我猜它意味着它是语言中的默认值,您不必使用
from __future__ import annotations
来启用它annotations
功能是指PEP 563:推迟注解的求值,这是对现有annotations feature的增强,annotations feature最初是在python 3.0中引入的,在python 3.5中被重新定义为type hints,这就是为什么你的代码可以在python 3.8下工作。下面是python3.7+中可选的
from __future__ import annotations
的变化:但这个管用
参见python 3.7中的这一章关于延迟注解的新特性:
由于这个改变破坏了兼容性,新的行为需要在Python 3.7中使用
__future__
导入在每个模块的基础上启用:from __future__ import annotations
它将成为Python 3.10* 中的默认值。
yacmzcpb2#
强制性,默认情况下会出现。可选性,需要从
from __future__ import annotations
语句中“激活