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:
...