在查看pytest src 代码时,我发现了这个奇怪的声明,有人可以解释一下吗?
if False: # TYPE_CHECKING
from typing import Type
Run Code Online (Sandbox Code Playgroud)
实际上,我目前正在查看PEP 526,我认为这可能以某种方式与注释相关,但不确定如何相关。有人可能会False以评估的方式进行注释吗True?
快速查看输入源代码后,我发现:
# Constant that's True when type checking, but False here.
TYPE_CHECKING = False
Run Code Online (Sandbox Code Playgroud)
因此,从我目前收集到的信息来看,@chepner 是正确的。运行类型检查时会评估此语句True,然后可能需要实际导入。虽然在我看来这仍然很奇怪(#if DBG在 C 中更清晰)
if False:
...
Run Code Online (Sandbox Code Playgroud)
是一种旧的编写方式,现在(自 Python 3.5.2 起)用
from typing import TYPE_CHECKING
if TYPE_CHECKING:
...
Run Code Online (Sandbox Code Playgroud)
True由第三方静态类型检查器假定的特殊常量。它是False在运行时。
| 归档时间: |
|
| 查看次数: |
1103 次 |
| 最近记录: |