这里"if False:"的目的是什么?
What is the purpose of "if False:" here?
https://github.com/asottile/pyupgrade/blob/fecacc91e57c224a0bd2564579ef01238650126c/pyupgrade.py#L53
if False: # pragma: no cover (mypy)
from typing import Type
if sys.version_info >= (3,):
AsyncFunctionDef = ast.AsyncFunctionDef
else:
AsyncFunctionDef = ast.stmt
False
在 Python 2 中可以是真实的(可以重新定义)但在 Python 3 中不是。这可能是个玩笑,或者正在进行中,或注释代码的方式,但这是一个相当成熟的工具 - 我是否遗漏了什么?
运行 时从不需要 AsyncFunctionDef
的值,只有 mypy
在两个 Python-2 兼容的类型提示中(第 1298 和 1318 行) ). if False
防止赋值发生在 运行 时间,但让 mypy
看到在类型检查期间使用的正确基础类型。 (它还可以防止在尝试导入 Python 2 下的 typing
模块时引发 ImportError
。)
使用typing.TYPE_CHECKING
会更清楚(其值在运行时为False
,但在mypy
时为True
运行s) 这里,除了 typing.TYPE_CHECKING
是 也 在 Python 2.
中不可用
if False
在 if typing.TYPE_CHECKING
上使用,因为 pyupgrade 支持 python3.5.0-3.5.2 而没有 typing.TYPE_CHECKING
-- 你可以找到更多信息在 flake8-typing-imports(我也是这个 flake8 插件的作者)
在 3.5.3+ 和 typing
向后移植(适用于任何 <3.5)TYPE_CHECKING
可用
免责声明:我是 pyupgrade 的作者
https://github.com/asottile/pyupgrade/blob/fecacc91e57c224a0bd2564579ef01238650126c/pyupgrade.py#L53
if False: # pragma: no cover (mypy)
from typing import Type
if sys.version_info >= (3,):
AsyncFunctionDef = ast.AsyncFunctionDef
else:
AsyncFunctionDef = ast.stmt
False
在 Python 2 中可以是真实的(可以重新定义)但在 Python 3 中不是。这可能是个玩笑,或者正在进行中,或注释代码的方式,但这是一个相当成熟的工具 - 我是否遗漏了什么?
运行 时从不需要 AsyncFunctionDef
的值,只有 mypy
在两个 Python-2 兼容的类型提示中(第 1298 和 1318 行) ). if False
防止赋值发生在 运行 时间,但让 mypy
看到在类型检查期间使用的正确基础类型。 (它还可以防止在尝试导入 Python 2 下的 typing
模块时引发 ImportError
。)
使用typing.TYPE_CHECKING
会更清楚(其值在运行时为False
,但在mypy
时为True
运行s) 这里,除了 typing.TYPE_CHECKING
是 也 在 Python 2.
if False
在 if typing.TYPE_CHECKING
上使用,因为 pyupgrade 支持 python3.5.0-3.5.2 而没有 typing.TYPE_CHECKING
-- 你可以找到更多信息在 flake8-typing-imports(我也是这个 flake8 插件的作者)
在 3.5.3+ 和 typing
向后移植(适用于任何 <3.5)TYPE_CHECKING
可用
免责声明:我是 pyupgrade 的作者