Seite 1 von 1
Wie sollte man Importieren?
Verfasst: Freitag 19. Dezember 2008, 08:57
von jens
Letztens war irgendwann auf der django-dev die Diskussion über das importieren. In django wir super oft "from package.module import Foo, bar" gemacht. Bei google gibt es wohl den internen Styleguide nach die Regel, das maximal ein Modul importiert werden sollte.
In PEP-8 gibt es auch den Punkt "Imports". Demnach kann man ruhig beides nutzten.
Wie handhabt ihr das bzw. wie meinst ihr sollte es gemacht werden?
Re: Wie sollte man Importieren?
Verfasst: Freitag 19. Dezember 2008, 09:19
von Michael Schneider
jens hat geschrieben:Wie handhabt ihr das bzw. wie meinst ihr sollte es gemacht werden?
Hi Jens,
tatsächlich mache auch ich das mal so und mal so. Prinzipiell bevorzuge ich, vor allem bei umfangreicheren Programmen, das Prinzip Klarheit vor Kürze. Also lieber Modulimport als nur die Funktionen. Das führt zu weniger Verwechslungen und bietet die Möglichkeit, gleiche Namen innerhalb verschiedener Module zu verwenden.
Ich gebe zu, dass ich auch ziemlich häufig den *-Import verwende, allerdings nur in bestimmte Fällen. So habe ich es mir angewöhnt, Konfigurationen und Konstanten in ein Extramodul zu schreiben, das ich dann per *-Import überall einbinde.
Gleiches gilt für spezielle Funktionssammlungen wie mein HTML-Codegenerierungsmodul, in dem ich Funktionen mit Tagnamen definiert habe, die bei Aufruf ihre Parameter in Tags einschließen und als Ergebnis den HTML-Code als String zurückgeben. Diese Funktionen binde ich in einem
eigenen HTML-Seitengenerierungsmodul ein, aus dem ich dann aber nur die Funktionen zur Seitengenerierung ins Hauptprogramm importiere.
Grüße,
Michel
Re: Wie sollte man Importieren?
Verfasst: Freitag 19. Dezember 2008, 09:56
von Leonidas
jens hat geschrieben:Wie handhabt ihr das bzw. wie meinst ihr sollte es gemacht werden?
Meist importiere ich die Klassen oder die Funktionen direkt außer wenn ich eine größere Anzahl Funktionen/Klassen aus einem Modul brauche, dann hole ich mir das Modul.
Verfasst: Freitag 19. Dezember 2008, 10:22
von lunar
Neben der Menge wie bei Leonidas spielt bei mir auch die "Eindeutigkeit" der Namen eine Rolle. Wenn man einem Namen nicht ansieht, was er bedeutet, dann importiere ich ihn meistens über das Modul.
Ein Beispiel: "urlopen" ist klar, daher importiere ich meist als "from urllib2 import urlopen". "join()" dagegen ist keineswegs ein aussagekräftiger Name, daher importiere ich eigentlich immer per "import os" und nutze dann "os.path.join()", selbst wenn ich nur "join()" brauche.
Sternchen-Imports nutze ich kaum, Konstanten habe ich auch selten. Nur bei Qt4 sehe ich das nicht kritisch, da die Klassen und Funktionen dieses Frameworks dank dessen Namenskonvention kaum Raum für Namenskonflikte geben. Daher nutze ich auch manchmal "from PyQt.QtGui import *"
Verfasst: Freitag 19. Dezember 2008, 13:27
von nkoehring
Ich handhabe es wie Leonidas bzw lunar. Bei Sachen wie
join() verwende ich allerdings oftmals
as, also zB: