跳到内容

import-outside-top-level (PLC0415)

源自 Pylint 代码检查工具。

作用

检查 import 语句是否在模块的顶层作用域之外,例如在函数或类定义中。

为什么这不好?

PEP 8 建议不仅将导入语句放在模块的顶层,而且放在文件的最顶部,“紧随任何模块注释和文档字符串之后,在模块全局变量和常量之前。”

import 语句具有全局范围的影响;在顶层定义它们有很多好处。例如,它可以更容易地识别模块的依赖项,并确保无论是否调用特定函数或实例化类,都会捕获任何无效的导入。

通常只有为了避免循环依赖、推迟代价高昂的模块加载,或者完全避免在特定运行时环境中加载依赖项,才会将导入语句放在函数中。

示例

def print_python_version():
    import platform

    print(platform.python_version())

建议改为

import platform


def print_python_version():
    print(platform.python_version())

另请参阅

如果启用了规则 banned-module-level-imports,则此规则将忽略在 lint.flake8-tidy-imports.banned-module-level-imports 中配置的导入语句。