2013-06-24 37 views
18

我很少寫東西像進口長在Python

from blqblq.lqlqlqlq.bla import fobarbazbarbarbazar as foo 
from matplotlib.backends.backend_qt4agg import FigureCanvasQTAgg as FigureCanvas 

這需要超過80個字符。 official Python coding style guide中沒有涵蓋這種情況。我如何在Python中編寫這樣的導入?

回答

21

http://www.python.org/dev/peps/pep-0008/#maximum-line-length

纏繞長行的優選方式是通過使用括號內,括號和大括號Python的暗示 線延續。通過在 括號中包裝表達式,長行 可以分成多行。這些應優先使用反斜槓 用於續行。確保適當地縮進續行 。破解二元運算符 的首選位置在運算符之後,而不是在它之前。

所以你的情況,這可能是:

from blqblq.lqlqlqlq.bla import (
           fobarbazbarbarbazar 
           as foo) 
from matplotlib.backends.backend_qt4agg import (
               FigureCanvasQTAgg 
               as FigureCanvas) 

我個人一直使用這種風格,我覺得更易讀與長行:

# Just 1 indent 
from blqblq.lqlqlqlq.bla import (
    fobarbazbarbarbazar 
    as foo 
) # end at the next line so it's always clear where what ends 

from matplotlib.backends.backend_qt4agg import (
    FigureCanvasQTAgg as FigureCanvas 
) 
+0

你的第二個例子違反了新的行應在開頭括號下開始的規則。這是一個可以接受的折衷方案,你如何決定繼續這條路線。 – Vorac

+0

這實際上是在我的部分縮進時出現的錯誤,正式情況下,您應該可以不使用它(除非您的單詞長度超過80個字符,但在這種情況下,您可能無論如何都會出錯)。 – Wolph

5

這是PEP8documentation進口

目前,如果你想從一個模塊或 包導入了很多名字,你要選擇的幾個難吃選項之一:

寫有反斜槓延續長​​線:

from Tkinter import Tk, Frame, Button, Entry, Canvas, Text, \ 
    LEFT, DISABLED, NORMAL, RIDGE, END 

寫多個import語句:

from Tkinter import Tk, Frame, Button, Entry, Canvas, Text 
from Tkinter import LEFT, DISABLED, NORMAL, RIDGE, END 

(進口*是不是一種選擇;-)

相反,它應該可以使用Python的標準分組 機制(括號內)寫的import語句:

from Tkinter import (Tk, Frame, Button, Entry, Canvas, Text, 
    LEFT, DISABLED, NORMAL, RIDGE, END) 

該提案的這部分已從BDFL批准開始。

圓括號支持已添加到Python 2.4。