Czytałem, że istnieją trzy sposoby kodowania importu wielowierszowego w Pythonie
Z ukośnikami:
from Tkinter import Tk, Frame, Button, Entry, Canvas, Text, \
LEFT, DISABLED, NORMAL, RIDGE, END
Powielanie sentencji:
from Tkinter import Tk, Frame, Button, Entry, Canvas, Text
from Tkinter import LEFT, DISABLED, NORMAL, RIDGE, END
Z nawiasami:
from Tkinter import (Tk, Frame, Button, Entry, Canvas, Text,
LEFT, DISABLED, NORMAL, RIDGE, END)
Czy istnieje zalecany format lub bardziej elegancki sposób na takie stwierdzenia?
python
python-2.7
pep8
Manuel Alvarez
źródło
źródło
from Tkinter import *
?from data.forms import AddressEmbeddedField, PhoneEmbeddedField, MailEmbeddedField, \ WebEmbeddedField
ale nie chcę, importować wszystkich pozostałych pól osadzonych w data.formsfrom Tkinter import *
? Nie jestem. I IDE nie będą wiedzieć, czy te nazwy (być może), dlatego nie są w stanie stwierdzić, czy wpisałeś nieprawidłową nazwę.Odpowiedzi:
Osobiście używam nawiasów podczas importowania więcej niż jednego komponentu i sortuję je alfabetycznie. Tak jak to:
Ma to dodatkową zaletę polegającą na łatwym sprawdzaniu, jakie komponenty zostały dodane / usunięte w każdym zatwierdzeniu lub żądaniu wykonania.
Ogólnie rzecz biorąc, to osobiste preferencje i radziłbym ci wybrać to, co wygląda najlepiej.
źródło
Twoje przykłady wydają się pochodzić z PEP 328 . Tam, właśnie dla tego problemu zaproponowano notację w nawiasach, więc prawdopodobnie wybrałbym ten.
źródło
Poszedłbym z notacją nawiasów z PEP328 z nowymi wierszami dodanymi przed i po nawiasach:
Oto format, którego używa Django :
źródło
from foo import (bar, baz)
. PEP 328 nie mówi nic o formatowaniu.Zwykle w przypadku Tkintera można go po prostu użyć,
from Tkinter import *
ponieważ moduł eksportuje tylko nazwy, które są wyraźnie widżetami.PEP 8 nie wymienia żadnych konwencji dla takiego przypadku, więc myślę, że to do Ciebie należy decyzja, która opcja jest najlepsza. Chodzi o czytelność, więc wybierz to, co sprawia, że jest jasne, że importujesz rzeczy z jednego modułu.
Ponieważ wszystkie te nazwy są dostępne w twoim zakresie, osobiście uważam, że opcja 2 jest najbardziej przejrzysta, ponieważ najlepiej widać importowane nazwy. Możesz nawet podzielić to bardziej, aby być może pogrupować razem te nazwiska, które do siebie pasują. W przykładzie mogę umieścić
Tk
,Frame
aCanvas
osobno, ponieważ grupa widżety razem, mając jednocześnieButton
iText
oddzielnie, ponieważ są one mniejsze elementy w widoku.źródło
from X import *
nawet pakietami, które używają__all__
poprawnie, polega na tym, że statyczne analizatory kodu, takie jakpyflakes
nie mogą wykryć niezdefiniowanych nazw, jeśli istnieją,import *
ponieważ muszą założyć, że jakiekolwiek niezdefiniowane nazwy mogły zostać zaimportowane przez*
.