首页 > 解决方案 > “if False: from typing import Type”是什么意思?

问题描述

查看 pytest src 代码时,我发现了那个特殊的语句,有人可以解释一下吗?

if False:  # TYPE_CHECKING
    from typing import Type

我目前实际上正在查看PEP 526,我认为这可能与注释有关,但不确定如何。是否有可能有人会False以它会评估的方式进行注释True

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

# Constant that's True when type checking, but False here.
TYPE_CHECKING = False

所以从我目前收集到的信息来看,@chepner 是对的。运行类型检查时会评估此语句True,然后可能需要实际导入。虽然这在我看来仍然很奇怪(#if DBG在 C 中更清晰)

标签: pythontypes

解决方案


if False: 
    ...

是编写现在(从 Python 3.5.2 开始)的旧方法

from typing import TYPE_CHECKING

if TYPE_CHECKING: 
    ...

TYPE_CHECKING

True3rd 方静态类型检查器假定的特殊常量。它False在运行时。


推荐阅读