2

我不明白Google Python Style Guide 中关于每行多次导入的内容

可以这样(根据Google Style Guide)吗:

from wagtail.wagtailimages.blocks import ImageChooserBlock, EmbedBlock

还是我必须这样写:

from wagtail.wagtailimages.blocks import ImageChooserBlock
from wagtail.wagtailembeds.blocks import EmbedBlock

谢谢。

4

3 回答 3

1

第一种方法肯定没问题。没有人做第二种选择,那将是非常浪费的。您不应该在同一行中导入多个不同的模块,但您的第一个示例是关于从单个模块获取多个属性。

于 2017-06-18T10:12:32.380 回答
1

使用第一个。

from wagtail.wagtailimages.blocks import ImageChooserBlock, EmbedBlock

要导入多个成员,您可以使用括号并添加一些换行符。这是一个例子:

from OpenGL.GLUT import (GLUT_DEPTH, GLUT_DOUBLE, GLUT_RGB, glutCreateWindow,
                         glutDisplayFunc, glutInit, glutInitDisplayMode,
                         glutInitWindowSize, glutMainLoop, glutSwapBuffers)

请注意区别:

您不应在一行中导入多个模块:

import os, sys, platform    # DO NOT DO THIS!

但是导入多个成员就可以了:

from math import sin, cos

提示:查看isort

于 2017-06-18T10:40:18.793 回答
0

如果在链接的样式指南中单击“导入格式”部分正下方的朝右三角形,则会得到一些正面和负面的例子。这是积极的例子之一:

import foo
from foo import bar
from foo.bar import baz
from foo.bar import Quux
from Foob import at

如您所见,两个项目是从单个模块导入的foo.bar,它们列在不同的行上。

因此,在您的两个示例中,Google 样式指南希望您使用第二个单独的行。请注意,我并不是说这是你真正应该做的,只是显然谷歌风格指南说你应该这样做,这似乎是你的问题。

另一方面,Chromium 项目的 Python 风格指南,显然也是由谷歌提供的,它说

  • 可以在一个模块中导入包、模块和事物。之所以提到这一点,是因为它与Google 样式指南中关于导入的部分相矛盾 (请记住,这不是 Chromium OS 的权威)。
    • 换一种说法,这完全没问题: from subprocess import Popen, PIPE

那个例子,说是好的,确实在一行中从一个模块中导入了多个项目。因此,请选择您的权威。

于 2017-06-18T10:12:47.150 回答