Подтвердить что ты не робот

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

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

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

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

4b9b3361

Ответ 1

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 always clear where what ends

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

Ответ 2

Это 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 с самого начала.

Поддержка Parentheses была добавлена ​​в Python 2.4.