跳到内容

runtime-import-in-type-checking-block (TC004)(类型检查块中的运行时导入)

源自 flake8-type-checking 代码检查器。

有时提供修复。

作用

检查运行时需要但仅在类型检查块中定义的导入。

为什么这不好?

类型检查块不会在运行时执行,因此如果符号的唯一定义在类型检查块中,则它在运行时将不可用。

如果 lint.flake8-type-checking.quote-annotations 设置为 true,则如果这样做可以使相应的导入保留在类型检查块中,则注释将被引号括起来。

示例

from typing import TYPE_CHECKING

if TYPE_CHECKING:
    import foo


def bar() -> None:
    foo.bar()  # raises NameError: name 'foo' is not defined

建议改为

import foo


def bar() -> None:
    foo.bar()

Options (选项)

参考