Python “是什么意思?”;如果为False:从键入导入类型";?

Python “是什么意思?”;如果为False:从键入导入类型";?,python,types,Python,Types,在检查时,我发现了那个奇怪的说法,有人能解释一下吗 if False: # TYPE_CHECKING from typing import Type 我现在正在查看,我认为这可能与注释有关,但不确定如何联系。有没有可能有人将False注释为True 在快速查看src后,我发现: # Constant that's True when type checking, but False here. TYPE_CHECKING = False 因此,从我目前收集的情况来看,@chepn

在检查时,我发现了那个奇怪的说法,有人能解释一下吗

if False:  # TYPE_CHECKING
    from typing import Type
我现在正在查看,我认为这可能与注释有关,但不确定如何联系。有没有可能有人将
False
注释为
True

在快速查看src后,我发现:

# Constant that's True when type checking, but False here.
TYPE_CHECKING = False
因此,从我目前收集的情况来看,@chepner是对的。运行类型检查时,此语句的计算结果为
True
,然后可能需要实际导入。尽管在我看来这仍然很奇怪(如果C中的DBG更清晰的话)

这是一种旧的编写方式,现在(从Python 3.5.2开始)已经完成了

from typing import TYPE_CHECKING

if TYPE_CHECKING: 
    ...

第三方静态类型假定为
True
的特殊常数 跳棋。它在运行时为
False


因为
False
不是真的,所以这没有任何作用。@scott Hunter这正是我想知道的。这是死代码吗?它出现在pytest的src代码文件中,所以我认为这会很奇怪……它是死代码;至于它为什么会在那里,你必须和包含它的作者谈谈。我在想,这可能会检查Python2中的
False
没有设置为另一个值,但是在Python2中
typing
本身是
typing
模块的一个属性,在普通代码中设置为
False
,但在类型检查器处理代码时设置为
True
(我猜)。
from typing import TYPE_CHECKING

if TYPE_CHECKING: 
    ...