Seite 1 von 1
Wie imports formatieren?
Verfasst: Mittwoch 19. März 2008, 15:31
von jens
Ich hab es nun schon öfters gesehen, das Leute imports Zeile für Zeile machen, z.B. so:
Ich fasse das eigentlich immer zusammen, also so:
Welche Variante nutzt ihr und warum?
Verfasst: Mittwoch 19. März 2008, 15:33
von audax
erst die normalen import, Zeile für Zeile, dannach die `from foo import bar`, die ich zusammenfasse.
Das sollten ja sowieso nicht so viele auf einmal sein.
Verfasst: Mittwoch 19. März 2008, 16:07
von Y0Gi
Jedes Modul in eine eigene Zeile. Das ist nicht nur übersichtlicher, sondern erlaubt auch das gezielte Auskommentieren. Auch in der Versionskontrolle sind Änderungen IMHO lesbarer. Auch ein Ausgliedern in eine neue Zeile entfällt, wenn man nachträglich die `from`-Syntax nutzen will. Davon ab wird man mit einer einzelnen Zeile ohnehin kaum auskommen, um alle Imports einer umfangreicheren Anwendung noch in EOL 79 unter zu bekommen.
Weiterhin ordne ich die Imports primär nach Modulnamen und (meistens) sekundär die importierten Objekte. Die Imports teile ich insgesamt in drei Gruppen: Mitgelieferte (also seit 2.5 auch ElementTree und SQLite), Third-Party (z.B. SQLAlchemy, Werkzeug) und Applikationseigene. So weiß man direkt, was woher kommt.
Das (bis auf die alphabetische Sortierung vielleicht) schreibt IIRC auch das entsprechende PEP (8?) vor.
Verfasst: Mittwoch 19. März 2008, 17:01
von BlackJack
Ich schreibe auch eine Zeile pro Import, erst die aus der Standardbibliothek, dann die von Drittanbietern, gefolgt von eigenen. Danach die ``from``-Importe. Alles immer alphabetisch sortiert. Grund ist auch bei mir Versionsverwaltung, insbesondere wenn man mit mehreren Leuten zusammen arbeitet, verhindert man so, dass Importe mehrfach vorkommen.
Verfasst: Mittwoch 19. März 2008, 17:25
von EnTeQuAk
Bei mir ebenso, jedoch das ich weniger auf die Alphabetische Reihenfolge achte.
Was die `from` importe angeht, wird aus einem Modul jeweils mit nur einer Importanweisung importiert:
Code: Alles auswählen
from module import p1, p2, p3, p4 .... p7 \
p8, p9, p10 #usw...
Manch einer schreibt ja dafür auf der zweiten Zeile gern nen neuen Import, das find ich aber unübersichtlich und durch die Einrückung sieht man später gut das alles zusammen gehört
Gruß, Christopher
Verfasst: Mittwoch 19. März 2008, 19:28
von birkenfeld
Y0Gi hat geschrieben:
Weiterhin ordne ich die Imports primär nach Modulnamen und (meistens) sekundär die importierten Objekte. Die Imports teile ich insgesamt in drei Gruppen: Mitgelieferte (also seit 2.5 auch ElementTree und SQLite), Third-Party (z.B. SQLAlchemy, Werkzeug) und Applikationseigene. So weiß man direkt, was woher kommt.
So halte ichs auch. Nur sortiere ich nach Länge des Modulnamens (sieht viiiiiiiiel schöner aus

).
Verfasst: Mittwoch 19. März 2008, 19:52
von EyDu
birkenfeld hat geschrieben:Nur sortiere ich nach Länge des Modulnamens (sieht viiiiiiiiel schöner aus

).
Dann bin ich also doch nicht der einzige, der diese seltsame Angewohnheit hat

Sieht aber auch einfach elegant aus.

Verfasst: Mittwoch 19. März 2008, 22:21
von nomade
Jedes Modul in eine Zeile bringt einerseits Übersichtlichkeit und zusätzlich
auch eine einfache Möglichkeit des Auskommentierents.
Evtl. ist auch noch eine "kategorien-basierende" Import-Gruppierung sinnvoll:
1. import <Standard-Lib>
2. import <3rd Party>
3. import <eigene module>
Alles in allem jedoch Geschmackssache.
Beste Grüße
Nomade
Verfasst: Donnerstag 20. März 2008, 08:08
von jens
Das Gruppieren in Standard-Lib, 3rd Party und eigene module mache ich auch. Allerdings bin ich wohl mit der alles in einer Zeile Variante ehr die Ausnahme.
Aber ihr habt eigentlich recht, es ist übersichtlicher es auf Zeilen zu verteilen, vielleicht sollte ich mir das auch angewöhnen

Verfasst: Donnerstag 20. März 2008, 09:00
von CM
Hoi,
Nebenbei, ihr wisst schon, daß man (ab 2.4) "from"-Importe klammern kann, also
Code: Alles auswählen
from module import (p1, p2, p3, p4 .... p7,
p8, p9, p10)
?
Mehr dazu findet sich hier:
http://www.python.org/dev/peps/pep-0328/
Gruß,
Christian
Verfasst: Donnerstag 20. März 2008, 09:52
von mitsuhiko
CM hat geschrieben:Nebenbei, ihr wisst schon, daß man (ab 2.4) "from"-Importe klammern kann, also
Code: Alles auswählen
from module import (p1, p2, p3, p4 .... p7,
p8, p9, p10)
?
Klar, aber da gefällt mir der Backslash besser.
Verfasst: Donnerstag 20. März 2008, 10:00
von meneliel
EyDu hat geschrieben:birkenfeld hat geschrieben:Nur sortiere ich nach Länge des Modulnamens (sieht viiiiiiiiel schöner aus

).
Dann bin ich also doch nicht der einzige, der diese seltsame Angewohnheit hat

Sieht aber auch einfach elegant aus.

ich wusste, irgendwas kann ich noch machen, dass es schöner aussieht
Aber hab am Anfang immer alles in einer Zeile geschrieben aus der Std-lib den Rest jedes in eine Zeile.
Aber dann hat ich irgendwo gelesen, dass besser jedes import auf eine neue Zeile.
Dann hab ich die die nicht aus der std-lib
Und zum Schluss meine eigenen (nur funktioniert das nicht immer

) und da weiß ich bisher nicht woran es liegt. Füge den Ordner am Anfang mit sys.path.append hinzu und importiere dann das Modul. Funktioniert im Prinzip prima auf nem lokalen Rechner. Liegt der Code auf einem anderen Rechner/Server, wo ich über meinen lokalen Rechner drauf zugreife funktioniert das nicht mehr

warum? Aber die restlichen Skripte liegen ja dann auch dort.
Verfasst: Donnerstag 20. März 2008, 14:05
von Leonidas
Ich bin böse und gemein, sortiere meine Imports nur thematisch in drei Gruppen und verschosse wissentlich gegen PEP8 indem ich mehrere Imports in einer Zeile zusammenfasse. Genauso wie ich die ``from``-Imports alle in einer Zeile habe (oder mehreren, mit Backslashes, die Klammern sind mir bekannt, nutze ich aber nicht), statt immer neue ``from``-Imports zu machen. Die Reihenfolge ist die, in der ich die Module benötigt habe.
Das Argument mit der Versionskontrolle ist zwar ok, aber ich habe bisher keine Probleme von der Seite zu vermelden gehabt und so spare ich einfach viele Zeilen Import-Code, der in einer Zeile ebenso verständlich ist.
