在浏览pytest src代码时,我发现了那个奇特的陈述,有人可以解释一下吗?
if False: # TYPE_CHECKING
from typing import Type
我实际上目前正在查看 PEP 526,我认为这可能以某种方式与注释有关,但不确定如何。是否有可能有人会以评估True
的方式注释False
?
快速浏览了一下打字src后,我发现:
# Constant that's True when type checking, but False here.
TYPE_CHECKING = False
因此,从我目前收集的信息来看,@chepner是对的。运行类型检查时,此语句的计算结果为True
,然后可能需要实际导入。虽然这对我来说仍然看起来很奇怪(C 语言中的#if DBG
更清晰(
if False:
...
是一种编写现在(自 Python 3.5.2 以来(完成的内容的旧方式
from typing import TYPE_CHECKING
if TYPE_CHECKING:
...
TYPE_CHECKING
是
假定由第三方静态类型
True
的特殊常量 跳棋。它在运行时False
。