https://peps.python.org/pep-0008/#imports
- import通常占用单独的行。
例如下面的是正确的:
下面的是不正确的:
不过,这样是正确的:
- import总是放在文件的顶部,紧跟在任何模块注释和文档字符串之后,以及模块全局变量和常量之前。
导入应按以下顺序分组:
- 标准库导入。
- 相关的第三方导入。
- 本地应用程序/库特定的导入。
每组导入之间应该留一个空行。
- 建议使用绝对导入,因为它们通常更具可读性,并且如果导入系统配置不正确(例如,当包内部的目录最终出现在
sys.path
中时),它们通常会表现得更好(或至少给出更好的错误消息):
但是,明确的相对导入是绝对导入的可接受替代方案,尤其是在处理复杂的包布局时,使用绝对导入会过于冗长:
标准库代码应避免复杂的包布局,并始终使用绝对导入。
- 当从一个包含类的模块导入类时,通常可以这样拼写:
如果这种拼写导致本地名称冲突,则明确拼写它们:
并使用myclass.MyClass
和foo.bar.yourclass.YourClass
。
- 应避免使用通配符导入(
from <module> import *
),因为它们会使命名空间中的哪些名称出现变得不明确,从而使读者和许多自动化工具感到困惑。通配符导入也有例外,那就是将内部接口作为公共API的一部分重新发布(例如,使用来自可选accelerator
模块的定义覆盖接口的纯Python实现,并且预先不知道将覆盖哪些定义)。