Python 中的长导入

问题描述 投票:0回答:2

我有时必须写一些类似的东西

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

需要超过80个字符。 官方Python编码风格指南中没有涵盖这种情况。我如何以Python方式编写这样的导入?

python coding-style
2个回答
63
投票

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

Python标准库比较保守,需要限制 行数为 79 个字符(文档字符串/注释为 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
)

30
投票

这是

PEP-0328
文档导入

目前,如果您想从模块或 套餐,你必须从几个不合口味的选项中选择一个:

写一个带有反斜杠延续的长行:

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 

(导入 * 不是一个选项;-)

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

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

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

Python 2.4 添加了括号支持。

© www.soinside.com 2019 - 2024. All rights reserved.