Python Module Benennung

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
mzh
User
Beiträge: 295
Registriert: Dienstag 3. März 2009, 15:27
Wohnort: ZH

Hallo
Dürfen Python Module nicht mit Zahlen beginnen? Also bspw. 00_module.py ist nicht erlaubt? Ich krieg hier einen Syntax Error, wenn ich ein so benannters Module importieren will (es ist ein Underscore, dass '-' in Variablen nicht erlaubt ist weiss ich).
Was gibt es sonst für eine geschickte Möglichkeit, dutzende Module in einem Verzeichnis zu ordnen?


Danke für Hinweise.
[url=http://www.proandkon.com]proandkon.com[/url]
BlackJack

@mzh: Für Modulnamen gelten die gleichen Regeln wie für andere Bezeichner auch -- also keine führenden Ziffern.

Du könntest mit einem erlaubten Zeichen beginnen und dann Ziffern schreiben. Andererseits ist das durchnummerieren von Namen IMHO auch bei Modulen ein "code smell".
mzh
User
Beiträge: 295
Registriert: Dienstag 3. März 2009, 15:27
Wohnort: ZH

sorry, was meinst du mit "code smell"?

Ich frage mich dennoch, wie man Module in einem Verzeichnis überschaubar organisiert.. dh. jedes Modul sollte mit, keine Ahnung, 'm' beginnen? Kann man schon machen.
[url=http://www.proandkon.com]proandkon.com[/url]
Benutzeravatar
/me
User
Beiträge: 3555
Registriert: Donnerstag 25. Juni 2009, 14:40
Wohnort: Bonn

mzh hat geschrieben:Ich frage mich dennoch, wie man Module in einem Verzeichnis überschaubar organisiert.. dh. jedes Modul sollte mit, keine Ahnung, 'm' beginnen? Kann man schon machen.
Ich würde überhaupt keine Konventionen dieser Art machen. Gibt es einen speziellen Grund, warum du so eine Namensgebung vornehmen möchtest? Eine Organisation würde ich eher über Packages vornehmen.

Erinnert sich noch jemand an diesen grässlichen Variablen-Prefixe der Windows-API a la lpsz (long pointer string zero-terminated)?
BlackJack

@mzh: "Code smell" heisst das der Code "komisch riecht" also irgendwie den Eindruck hinterlässt, dass da etwas falsch ist.

Ich finde Nummern nicht besonders übersichtlich -- die sagen ja nichts aus. Man sollte Module so benennen, dass sie deren Inhalt/Zweck beschreiben. Und wenn in einem Verzeichnis zu viele davon liegen, kann man sie sinnvoll zu Packages zusammen fassen.

Warum sollten Module mit `m` beginnen? Das es Module sind, ist doch schon dadurch klar, dass es *.py-Dateien sind. So eine Datei definiert ein Modul.
mzh
User
Beiträge: 295
Registriert: Dienstag 3. März 2009, 15:27
Wohnort: ZH

Der Hintergrund ist, dass ich ein Programm schreiben soll, welches mehrere Funktionen (und externe Programme) miteinander verbinden soll. Mein Vorgehen im Moment habe ich so geplant, dass ich erst mal alle Funktionen quasi "stand-alone" vorbereite und dann wenn ich weiss, dass die "atomisierten" Funktionen laufen, verknüpfe ich sie. Ich wollte daher die stand-alone Funktionen mit 00-XX-module.py bennenen, wobei XX einfach aufsteigend wäre. Wenn dann die Verbindungen hergestellt werden, dann könnte ich die "nächste Stufe" mit 01-XX-module.py benennen.
Ist wahrscheinlich nicht super schlau, dennoch, ich will irgendwie ein Chaos vermeiden. Zusätzlich möchte ich gerne wissen, wie ich eine gute Dokumentation verwirklichen kann. Ich habe gesehen, dass Sphinx recht fähig ist, ich weiss aber nicht wie ich das mit einbaue.
[url=http://www.proandkon.com]proandkon.com[/url]
BlackJack

@mzh: Also so ganz verstanden habe ich die Vorgehensweise und das Namensschema jetzt nicht!? Wieso kannst Du die "Stufen" nicht in Pakete stecken? Und bitte nicht nummeriert, sondern nach Inhalt benannt. Also zum Beispiel `atoms` und `composed` statt `00` und `01`. Und das gleiche bei den Modulen. Wieso ist es übersichtlich Module m00.py bis m10.py zu haben? Man sieht dann ja gar nicht welche Funktion(en) in welchem Modul stecken, also wofür sie eigentlich da sind. Wenn man da eine bestimmte Funktion sucht, helfen einem die Namen doch kein Stück weiter.

Das klingt ein wenig nach einer Funktion pro Modul -- das wäre mir auch ein wenig zu "dünn verteilt". Nur zwei Module `atoms` und `composed` mit den jeweiligen Funktionen darin, sind nicht möglich?

Die Sphinx-Frage ist IMHO ein wenig zu allgemein. Man benutzt es halt einfach. Wobei das "einbauen" bei Sphinx zwar möglich ist, aber man kann die Dokumentation damit auch unabhängig vom Quelltext schreiben. Wenn Du Dokumentation aus dem Quelltext extrahieren möchtest, a la Java-API-Dokumentation, würde ich eher Epydoc empfehlen. Sphinx ist IMHO dafür nicht so gut, sondern besser für Dokumentation in "Prosa" geeignet.
mzh
User
Beiträge: 295
Registriert: Dienstag 3. März 2009, 15:27
Wohnort: ZH

Nein, die Module waren anfangs 00-01-getFile.py, 00-02-getData.py, ... genannt. Hauptsächlich habe ich das gehabt, damit ich die Module untereinander und irgendwie gruppiert im Verzeichnis auflisten kann (und nicht vermixt mit anderen nicht-code Dateien). Aus dem Filenamen ging also schon hervor, was ungefähr da geschieht.
Bspw. in 00-03-setup.py waren Funktionen für Feststellen ob ein Command line Argument mit oder ohne File extension gegeben wurde damit eine entsprechende Datei anschliessend von einem Webserver geholt werden konnte. Eine andere Funktion in 00-03-setup hat noch überprüft, ob die Datei schon heruntergeladen worden ist.
[url=http://www.proandkon.com]proandkon.com[/url]
Benutzeravatar
/me
User
Beiträge: 3555
Registriert: Donnerstag 25. Juni 2009, 14:40
Wohnort: Bonn

mzh hat geschrieben:Bspw. in 00-03-setup.py waren Funktionen für Feststellen ob ein Command line Argument mit oder ohne File extension gegeben wurde damit eine entsprechende Datei anschliessend von einem Webserver geholt werden konnte. Eine andere Funktion in 00-03-setup hat noch überprüft, ob die Datei schon heruntergeladen worden ist.
Du hast eine Vorliebe für nondeskriptive Identifikation.

Ich verstehe auch nicht, warum die Dateien unbedingt in einem Verzeichnis je nach vermutlich eingesetzter Art und Weise gekennzeichnet werden müssen. Wie bereits gesagt, würde ich Packages empfehlen. Damit hast du direkt eine Trennung in mehrere Verzeichnisse.
DasIch
User
Beiträge: 2718
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

Irgendwie lassen mich die Zahlen in den Modul Namen befürchten, dass hier jemand von Versionskontrolle noch nichts gehört hat.
lunar

@DasIch: Was hat das denn mit Versionskontrolle zu tun?
Antworten