python 风格指南建议像这样对导入进行分组:
进口应按以下顺序分组: 标准库导入 相关第三方进口 本地应用程序/库特定导入
进口应按以下顺序分组:
但是,它没有提及应如何布置两种不同的导入方式:
from foo import bar import foo
有多种方法可以对它们进行排序(假设所有这些导入都属于同一个组):
首先from..import,然后import
from..import
import
from g import gg
from x import xx import abc import def import x
首先import,然后from..import
import abc
import def import x from g import gg from x import xx
按模块名称的字母顺序,忽略导入的类型
import def from g import gg import x from xx import xx
PEP8 没有提及此功能的首选顺序,并且某些 IDE 可能只是执行该功能的开发人员喜欢的任何“清理导入”功能。
我正在寻找另一个 PEP 澄清这一点或来自 BDFL(或另一个 Python 核心开发人员)的相关评论/电子邮件。 请不要发布主观的答案,说明您自己的偏好。
导入通常按字母顺序排序,并在 PEP 8 之外的各个地方进行描述。
按字母顺序排列的模块更易于阅读和搜索 。毕竟,Python 是关于可读性的。此外,更容易验证是否已导入某些内容,并避免重复导入。
PEP 8 中没有关于排序的任何内容。所以这一切都是关于选择你使用的东西。
根据来自知名网站和存储库的少量参考资料,也很受欢迎,按字母顺序排列是一种方式。
例如像这样:
import httplib import logging import random import StringIO import time import unittest from nova.api import openstack from nova.auth import users from nova.endpoint import cloud
或者
import a_standard import b_standard import a_third_party import b_third_party from a_soc import f from a_soc import g from b_soc import d
Reddit 官方存储库还指出,通常应使用 PEP-8 导入排序。但是,还有一些补充,即对于每个导入的组,导入的顺序应该是:
import <package>.<module> style lines in alphabetical order from <package>.<module> import <symbol> style in alphabetical order
参考:
PS:isort 实用程序会自动对您的导入进行排序。