Существует ли рекомендуемый формат для многострочного импорта?
Я прочитал, что есть три способа кодирования многострочного импорта в python
с косой чертой:
from Tkinter import Tk, Frame, Button, Entry, Canvas, Text,
LEFT, DISABLED, NORMAL, RIDGE, END
дублировать senteces:
from Tkinter import Tk, Frame, Button, Entry, Canvas, Text
from Tkinter import LEFT, DISABLED, NORMAL, RIDGE, END
С скобки:
from Tkinter import (Tk, Frame, Button, Entry, Canvas, Text,
LEFT, DISABLED, NORMAL, RIDGE, END)
есть ли рекомендуемый формат или более элегантный способ для этого заявления?
4 ответа:
лично я иду с круглыми скобками при импорте более одного компонента и сортирую их в алфавитном порядке. Вот так:
from Tkinter import ( Button, Canvas, DISABLED, END, Entry, Frame, LEFT, NORMAL, RIDGE, Text, Tk, )
это имеет дополнительное преимущество легко видеть, какие компоненты были добавлены / удалены в каждой фиксации или PR.
в целом, хотя это личное предпочтение, и я бы посоветовал вам пойти с тем, что выглядит лучше для вас.
ваши примеры, кажется, вытекают из PEP 328. Там скобки-обозначения предлагаются именно для этой проблемы, поэтому, вероятно, я бы выбрал этот.
Я бы пошел с обозначением скобок из PEP328 С добавлением новых строк до и после скобок:
from Tkinter import ( Tk, Frame, Button, Entry, Canvas, Text, LEFT, DISABLED, NORMAL, RIDGE, END )
Это формат, который Джанго применение:
from django.test.client import Client, RequestFactory from django.test.testcases import ( LiveServerTestCase, SimpleTestCase, TestCase, TransactionTestCase, skipIfDBFeature, skipUnlessAnyDBFeature, skipUnlessDBFeature, ) from django.test.utils import ( ignore_warnings, modify_settings, override_settings, override_system_checks, tag, )
обычно с Tkinter, это нормально просто использовать
from Tkinter import *
как модуль будет экспортировать только имена, которые явно виджеты.PEP 8 не перечисляет никаких конвенций для такого случая, поэтому я думаю, что это до вас, чтобы решить, что является лучшим вариантом. Все дело в удобочитаемости, поэтому выбирайте то, что дает понять, что вы импортируете материал из одного модуля.
поскольку все эти имена доступны в вашей области, я лично думаю, что варианты 2 самые четкие, как вы можете видеть импортированные имена лучше всего. Затем вы можете даже разделить его больше, чтобы, возможно, сгруппировать эти имена вместе, которые принадлежат друг другу. В вашем примере я мог бы поставить
Tk
,Frame
иCanvas
отдельно, как они группируют виджеты вместе, имеяButton
иText
отдельно, поскольку они являются меньшими компонентами в представлении.