该蟒蛇风格指南建议对进口组这样的:
导入应按以下顺序分组:
- 标准库导入
- 相关第三方进口
- 本地应用程序/特定于库的导入
但是,它没有提及应如何布置两种不同的进口方式的内容:
from foo import bar
import foo
对它们进行排序有多种方法(假设所有这些导入都属于同一组):
首先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 abc
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导入顺序。但是有一些补充是
for each imported group the order of imports should be:
import <package>.<module> style lines in alphabetical order
from <package>.<module> import <symbol> style in alphabetical order
参考文献:
PS:isort实用程序会自动对您的导入进行排序。
问题内容: 这些方法之间在功能上有区别吗? 编辑(从其他贡献者添加了此语法): 问题答案: 不,但第一个是首选样式。 编辑: 另一个选项是 此外,它还允许调用者使用varargs语法。
问题内容: 我正在尝试在内添加HTML代码段,但无法使用包含功能。看来的当前语法与以前的语法不同:我看到许多示例使用 但是在官方文档中,它说使用 但随后在页面下方显示为 无论如何,我尝试了 我的代码片段不是很多代码,但是有很多事情要做。这可能会引起问题,所以我只用单词代替了内容,仍然一无所获。 我还尝试过直接在页面中声明模板,如下所示: 并遍历了引用脚本的所有变体,仍然一无所获。 我的页面还有很多
问题内容: 我是一名新的Python程序员,他正在从2.6.4跃升至3.1.1。在我尝试使用“ else if”语句之前,一切都很好。解释器在“ else if”中的“ if”之后给了我一个语法错误,原因是我似乎无法弄清。 我可能缺少一些非常简单的东西;但是,我无法自行找到答案。 问题答案: 在python中,“ else if”被拼写为“ elif”。 另外,您还需要在和之后加上一个冒号。 简单
问题内容: 目标: 使用C#和SQL2008正确设置参数化的SQL插入语句 问题: for循环中使用了以下语句,因此必须清除这些值。运行此代码后,它指出在250附近有语法错误。代码如下 } 在此先感谢您的更正,评论和建议。 问题答案: 您不必在SQL代码中重新声明变量。这应该工作:
问题内容: 我正在使用vb.net和Access 2010作为数据库(.accdb) 这适用于MySQL: 但是,当将相同的查询传递给Access时,出现以下错误: 因此,我假设CASE语句的访问权限不同,或者访问是否完全具有该功能? PS is_enable为布尔值 问题答案: 弄清楚了: Access 2010没有CASE功能,我们改用SWITCH。 感谢
问题内容: 对于具有所有带有公共静态方法的实用程序类,正确的方法是什么? 我应该使用最终班还是抽象班? 请提出建议。 例如: 要么 问题答案: 有自己的目的。如果您希望其他类()实现某些类功能,则可以使用abstract。 如果它只是实用程序类,但是您不希望其他类将其子类化,那么我将选择类。如果实用程序类只有方法,则您无法以任何方式覆盖它们,因此将它们也包含在类中也没有区别。