python风格指南建议像这样对导入进行分组:
导入应按以下顺序分组:
标准库导入
相关第三方进口
本地应用程序/库特定的导入
然而,它并没有提到两种不同的进口方式应该如何布局:
from foo import bar
import foo
有多种方法对它们进行排序(让我们假设所有这些导入都属于同一个组):
首先从. .导入,然后导入
从g导入gg
从x导入xx
进口美国广播公司
进口def
进口x
首先导入,然后从..import
进口美国广播公司
进口def
进口x
从g导入gg
从x导入xx
按模块名称按字母顺序排列,忽略导入的类型
进口美国广播公司
进口def
从g导入gg
进口x
从xx导入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
OR
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
引用:
https://code.google.com/p/soc/wiki/PythonStyleGuide
https://github.com/reddit/reddit/wiki/PythonImportGuidelines
http://docs.openstack.org/developer/hacking/
http://developer.plone.org/reference_manuals/external/plone.api/contribute/conventions.html#grouping-and-sorting
PS: isort实用程序自动对您的导入进行排序。