2017-06-18 54 views
1

我不明白什麼是寫在Google Python Style Guide about multiple imports per line根據谷歌風格指南的多個進口

它是確定(據谷歌風格指南)有這樣說:

from wagtail.wagtailimages.blocks import ImageChooserBlock, EmbedBlock 

或做我必須把它寫這樣的:

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

感謝。

+0

爲什麼你需要的奴隸,谷歌的一切?只要你喜歡就導入它。 –

+0

你問「是否可以」根據谷歌的Python風格指南,根據谷歌作爲一個整體,或根據其他的程序員?我的答案集中在前兩個,而其他答案至今只關注最後一個。澄清從你會不勝感激。 –

+0

@RoryDaulton編輯。謝謝。 –

回答

0

如果在該鏈接的樣式指南中,單擊「導入格式」部分下方的右側三角形,則會得到一些正面和負面的示例。這是積極的例子之一:

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

正如你可以看到,兩個項目從單個模塊foo.bar進口,他們是在單獨的行上市。

因此,在您的兩個示例中,Google樣式指南希望您使用第二個單獨的行。請注意,我不是說這就是你應該做的,只是Google風格指南顯示你應該這樣做,這似乎是你的問題。

在另一方面,Python Style Guidelines for The Chromium Projects,這顯然也是由谷歌,稱

  • 它是確定一個模塊內的導入包,模塊和事情。這僅僅是因爲它與谷歌風格指南(其中,請記住,它不是Chromium操作系統的權威)中關於導入的部分相矛盾。
    • 換句話說,這是完全正常:from subprocess import Popen, PIPE

這個例子,說成是好的,確實導入多個項目從一個模塊在同一行。因此,選擇你的權威將是什麼。

1

當然,第一種方法很好。沒有人會做第二種選擇,那將是非常浪費的。您不應該在同一行中導入多個不同的模塊,但您的第一個示例是關於從單個模塊獲取多個屬性。

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

+0

謝謝。但似乎isort根據PEP08,其中在一行中的多個進口是沒有問題的工作。 –

+0

你可以用一個文件來配置它 –