Python中的长导入

时间:2013-06-24 10:59:33

标签: python coding-style

我很少写像

这样的东西
from blqblq.lqlqlqlq.bla import fobarbazbarbarbazar as foo
from matplotlib.backends.backend_qt4agg import FigureCanvasQTAgg as FigureCanvas

超过80个字符。 official Python coding style guide中未涵盖此情况。我如何写python这样的导入?

2 个答案:

答案 0 :(得分:28)

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

  

Python标准库是保守的,需要限制   行到79个字符(和docstrings / comments到72)。

     

包装长行的首选方法是使用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
)

答案 1 :(得分:9)

这是 导入PEP8 documentation

  

目前,如果要从模块中导入大量名称或   包,你必须选择几个令人不快的选择之一:

     

用反斜杠连续写一个长行:

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

编写多个导入语句:

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

(import *不是一个选项; - )

     

相反,应该可以使用Python的标准分组   机制(括号)写入import语句:

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

该提案的这一部分从一开始就获得了BDFL的批准

     

在Python 2.4中添加了括号支持。