根据 PEP 8 风格指南:
导入通常应该在单独的行中
# Correct:
import os
import sys
# Wrong:
import sys, os
尽管这样说是可以的:
# Correct:
from subprocess import Popen, PIPE
导入总是放在文件的顶部
就在任何模块 cmets 和文档字符串之后,模块全局变量和常量之前。
进口应按以下顺序分组:
- 标准库导入。
- 相关的第三方进口。
- 本地应用程序/库特定导入。
您应该在每组导入之间放置一个空行。
推荐绝对进口
如果导入系统配置不正确(例如当包内的目录最终位于 sys.path 上时),它们通常更具可读性并且表现更好(或至少提供更好的错误消息):
import mypkg.sibling
from mypkg import sibling
from mypkg.sibling import example
但是,显式相对导入是绝对导入的可接受替代方案,尤其是在处理复杂的包布局时,使用绝对导入会不必要地冗长:
from . import sibling
from .sibling import example
标准库代码应避免复杂的包布局并始终使用绝对导入。
不应使用隐式相对导入,并且已在 Python 3 中删除。
从包含类的模块中导入类时。
通常可以这样拼写:
from myclass import MyClass
from foo.bar.yourclass import YourClass
如果此拼写导致本地名称冲突,则明确拼写:
import myclass
import foo.bar.yourclass
并使用“myclass.MyClass”和“foo.bar.yourclass.YourClass”。
应避免通配符导入(来自 import *)。
它们使命名空间中存在哪些名称变得不清楚,从而使读者和许多自动化工具感到困惑。通配符导入有一个可辩护的用例,即重新发布一个内部接口作为公共 API 的一部分(例如,用可选加速器模块中的定义覆盖接口的纯 Python 实现,以及哪些定义将被被覆盖是事先不知道的)。
以这种方式重新发布名称时,以下关于公共和内部接口的准则仍然适用。
更多信息在这里:https://www.python.org/dev/peps/pep-0008/#imports