Длинный импорт в Python

Мне редко приходится писать что-то вроде

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

, который занимает более 80 символов. Эта ситуация не охвачена в официальное руководство по стилю кодирования Python. Как я могу написать такой импорт pythonically?

2 ответов


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
)

это PEP8 документация на долго импорт:

В настоящее время, если вы хотите импортировать много имен из модуля или пакет, вы должны выбрать один из нескольких неприятных варианта:

напишите длинную строку с продолжениями обратной косой черты:

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.