import wirklich immer am Anfang???

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Benutzeravatar
jens
Moderator
Beiträge: 8483
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Montag 30. Mai 2005, 09:27

Normalerweise macht man imports ja immer am Anfang. Aber was ist mit Modulen, die man nur hin und wieder braucht? z.B. ein CGI-Skript welches nur in bestimmten Situationen die urllib2 benötigt?

Ist es da nicht Sinnvoll den import nur dann zu machen, wenn das Modul auch wirklich benötigt wird?

Der Nachteil ist natürlich, das man nicht auf Anhieb sieht, welche Module benötigt werden, aber bei Python internen Modulen ist das wohl nicht so schlimm, oder?

Wie seht ihr das?

CMS in Python: http://www.pylucid.org
GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
CM
User
Beiträge: 2464
Registriert: Sonntag 29. August 2004, 19:47
Kontaktdaten:

Montag 30. Mai 2005, 11:02

Genauso!

Hallo Jens,

man muß ja nicht päpstlicher sein als der Papst. Man sollte sich zwar für jeden Einzelfall überlegen, ob es sinnvoll ist Module dynamisch einzubinden (und oft genug geht es auch gar nicht), aber wenn man denn zum Schluß kommt, daß es in einem Fall sinnvoll ist: Warum nicht?

Gruß,
Christian
Benutzeravatar
Matflasch
User
Beiträge: 41
Registriert: Donnerstag 25. März 2004, 15:42
Wohnort: Hamburg
Kontaktdaten:

Montag 30. Mai 2005, 11:37

Man kann die Module ja auch dynamisch einbinden und oben bei den Imports den betreffenden Import auskommentiert hinzufügen mit der Kommentarzeile, dass dieses Modul, je nach Verwendung, dynamisch eingebunden wird.
Dann bekommt man mit, was gebraucht wird, wenn man sich die Imports anschaut und kann das Modul dynamisch einbinden.

Mfg, Matflasch
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

Montag 30. Mai 2005, 11:58

Hi Jens!

Meine Meinung kennst du ja schon.
http://www.python-forum.de/viewtopic.php?p=18205#18205

Ich importiere in der Funktion, in der ich ein anderes Modul brauche. Wenn ich das Modul in mehreren Funktionen benötige, dann wird dieses Modul auch in mehreren Funktionen importiert. Meine Messungen haben ergeben, dass das Modul nur beim ersten Import importiert wird und alle weitere Import-Anweisungen nur mehr den Namensraum zur Verfügung stellen. So habe ich eine schöne Kapselung der Namensräume, ohne an Geschwindigkeit einzubüßen.

Ich kann ja immer noch ein Kommentar an den Anfang eines Programms schreiben, in dem besondere, benötigte Module aufgezeigt werden.

lg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Montag 30. Mai 2005, 13:47

Ich mache das so: Module aus der stdlib importiere ich im Header, wobei ich die alle meist mit Kommas hintereinanderschreibe und keine *-Imports benutze (auch from-Imports nutze ich selten). Module nicht aus der stdlib, die essentiell sind, schreibe ich ein eine weitere import Zeile, für jedes optionale Paket was ich brauche eine weitere Zeile (denn PyGTK besteht ja beispielsweise aus gobject, gtk, pango usw, die kommen in eine Zeile). Soviel im Kopf. Wenn es aber Module gibt, die nur optional sind dann kommen die meist in die Funktionen, so dass wenn dieses Modul fehlt, nur diese Funktion nicht verfügbar ist.

Vorteile:
  1. Man sieht alle Module die essentiell sind im Header
  2. Die Module sind schön geordnet, nach Paketen
  3. Programm funktioniert auch ohne nicht essentielle Module
My god, it's full of CARs! | Leonidasvoice vs Modvoice
Benutzeravatar
jens
Moderator
Beiträge: 8483
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Montag 30. Mai 2005, 14:01

Danke für eure Antworten... Ich dachte nur, ich wäre schon wieder auf einem un-Pythonic-Weg :lol:

CMS in Python: http://www.pylucid.org
GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Antworten