首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >对Python `import x`和` `from x import y`语句进行排序的正确方法是什么?

对Python `import x`和` `from x import y`语句进行排序的正确方法是什么?
EN

Stack Overflow用户
提问于 2013-12-24 22:37:57
回答 6查看 84K关注 0票数 209

python style guide建议对导入进行如下分组:

导入应按以下顺序分组:

imports

  • related第三方导入特定于
  1. 标准库的
  2. 本地应用程序/库导入

但是,它没有提到应该如何布局这两种不同的导入方式:

代码语言:javascript
复制
from foo import bar
import foo

有多种方法可以对它们进行排序(假设所有这些导入都属于同一组):

  • 先是from..import,然后是import

从g导入gg从x导入xx导入abc导入def导入x

  • import,然后from..import

import abc import def import x from g import gg from x import xx

  • alphabetic order by module name,忽略导入类型

导入abc导入定义从g导入gg导入x从xx导入xx导入xx

PEP8没有提到这一点的首选顺序和“清理导入”功能,一些IDE可能只是做了该功能的开发人员喜欢的任何事情。

我正在寻找另一个澄清这一点的PEP,或者来自 (或其他核心开发人员)的相关评论/电子邮件。请不要张贴主观的答案来说明你自己的偏好。

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2013-12-24 23:48:50

除PEP 8外,进口通常按字母顺序排序,并在不同的地方进行描述。

按字母顺序排序的模块读取和搜索的速度更快。毕竟,Python就是关于可读性的。此外,更容易验证是否导入了某些内容,并避免了重复导入。

PEP 8中没有任何关于排序的内容。所以这一切都是关于选择你所使用的。

根据来自有声誉的网站和存储库的一些参考资料,也很受欢迎,字母顺序是方法。

例如,像这样:

代码语言:javascript
复制
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

代码语言:javascript
复制
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导入顺序。但是,对于每个导入的组,有几个附加内容应该是导入的顺序:

代码语言:javascript
复制
import <package>.<module> style lines in alphabetical order
from <package>.<module> import <symbol> style in alphabetical order

参考文献:

PS:isort utility会自动对您的导入内容进行排序。

票数 142
EN

Stack Overflow用户

发布于 2017-03-10 01:11:09

根据中情局的内部编码约定(WikiLeaks Vault 7 leak的一部分),python导入应该分为三组:

imports

  • Third-party imports

  • Application-specific导入
  1. 标准库

导入应在这些组中按字典顺序排序,忽略大小写:

代码语言:javascript
复制
import foo
from foo import bar
from foo.bar import baz
from foo.bar import Quux
from Foob import ar
票数 58
EN

Stack Overflow用户

发布于 2013-12-24 23:01:11

PEP8实际上对此只字不提。在这一点上没有约定,这并不意味着Python社区需要绝对定义一个约定。一个选择对一个项目来说可能是更好的,但对另一个项目来说可能是最坏的。这是一个偏好的问题,因为每种解决方案都有优缺点。但如果你想遵循惯例,你必须遵守你引用的主要顺序:

imports

  • related第三方导入特定于
  1. 标准库的
  2. 本地应用程序/库导入

例如,导入的Google recommend in this page应该按字典顺序在每个类别(标准/第三方/您的类别)中排序。但在Facebook,Yahoo和其他地方,这可能是另一种惯例...

票数 10
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20762662

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档