Ich habe gelesen, dass es drei Möglichkeiten gibt, mehrzeilige Importe in Python zu codieren
Mit Schrägstrichen:
from Tkinter import Tk, Frame, Button, Entry, Canvas, Text, \
LEFT, DISABLED, NORMAL, RIDGE, END
Duplizieren von Senteces:
from Tkinter import Tk, Frame, Button, Entry, Canvas, Text
from Tkinter import LEFT, DISABLED, NORMAL, RIDGE, END
Mit Klammern:
from Tkinter import (Tk, Frame, Button, Entry, Canvas, Text,
LEFT, DISABLED, NORMAL, RIDGE, END)
Gibt es ein empfohlenes Format oder einen eleganteren Weg für diese Aussagen?
python
python-2.7
pep8
Manuel Alvarez
quelle
quelle
from Tkinter import *
?from data.forms import AddressEmbeddedField, PhoneEmbeddedField, MailEmbeddedField, \ WebEmbeddedField
aber nicht alle restlichen eingebetteten Felder in data.forms importieren wollenfrom Tkinter import *
? Ich bin nicht. Und IDEs wissen nicht, ob diese Namen (möglicherweise) vorhanden sind, sodass sie nicht erkennen können, ob Sie einen ungültigen Namen eingegeben haben.Antworten:
Persönlich gehe ich beim Importieren von mehr als einer Komponente in Klammern und sortiere sie alphabetisch. Wie so:
Dies hat den zusätzlichen Vorteil, dass Sie leicht sehen können, welche Komponenten in jedem Commit oder PR hinzugefügt / entfernt wurden.
Insgesamt ist es jedoch eine persönliche Präferenz und ich würde Ihnen raten, mit dem zu gehen, was für Sie am besten aussieht.
quelle
Ihre Beispiele scheinen aus PEP 328 zu stammen . Dort wird die Klammernotation für genau dieses Problem vorgeschlagen, also würde ich wahrscheinlich dieses wählen.
quelle
Ich würde mit der Klammernotation aus dem PEP328 mit Zeilenumbrüchen vor und nach Klammern gehen:
Dies ist das Format, das Django verwendet:
quelle
from foo import (bar, baz)
. PEP 328 sagt nichts über die Formatierung aus.Normalerweise ist es mit Tkinter in Ordnung, nur zu verwenden,
from Tkinter import *
da das Modul nur Namen exportiert, die eindeutig Widgets sind.In PEP 8 sind keine Konventionen für einen solchen Fall aufgeführt. Ich denke, es liegt an Ihnen, zu entscheiden, welche Option die beste ist. Es geht nur um Lesbarkeit. Wählen Sie also, was auch immer deutlich macht, dass Sie Inhalte aus einem einzelnen Modul importieren.
Da all diese Namen in Ihrem Bereich verfügbar sind, denke ich persönlich, dass Option 2 am klarsten ist, da Sie die importierten Namen am besten sehen können. Sie könnten es dann sogar mehr aufteilen, um vielleicht die Namen zu gruppieren, die zueinander gehören. In Ihrem Beispiel könnte ich und separat setzen
Tk
, wie sie Widgets gruppieren, während und separat, da sie kleinere Komponenten in einer Ansicht sind.Frame
Canvas
Button
Text
quelle
from X import *
auch bei Paketen, die__all__
ordnungsgemäß verwendet werden, darin, dass statische Code-Analysatoren wiepyflakes
keine undefinierten Namen erkennen können, wenn es welche gibt,import *
da davon ausgegangen werden muss, dass undefinierte Namen möglicherweise von der importiert wurden*
.