Seite 1 von 1
Import eines Moduls das selbst Module benötigt
Verfasst: Montag 24. August 2009, 19:25
von whaeva
Wahrscheinlich eine Standardfrage, aber Ich sehe es nicht explizit z.B. in
http://docs.python.org/tutorial/modules.html
Werden die Module aus __main__ 'vererbt', oder müssen sie sich quasi untereinander auch importieren?
Bsp.:
main.py:
meinmodul.py:
Das gibt nämlich leider einen NameError.
Das vermutlich erforderliche Kreuz-und-Quer-Importieren ist dann aber wieder etwas unübersichtlich. Muss ich wohl noch weiter abstrahieren ;-)
Verfasst: Montag 24. August 2009, 19:39
von cofi
Module sind abgeschlossene Programmteile, es wird nichts wild hin und her importiert und schon gar nicht implizit.
Importiert man ein Modul, hat man Zugriff auf dessen Namen, das schliesst auch dessen Importe ein. D.h.
funktioniert. Aber nicht umgekehrt und wie gesagt nicht ohne eine explizite Anweisung.
Das ganze ist aber auch eine Stilfrage. Naja eigentlich sogar mehr, denn du baust implizite Abhaengigkeiten ein. Importiere ausdruecklich, was das Modul braucht und du machst das Verstaendnis fuer jeden Leser einfacher.
Bei Gelegenheit mal:
Verfasst: Montag 24. August 2009, 20:13
von whaeva
Ich versteh's nicht.
Angenommen, ich will meine unlesbar lange main teilweise aufteilen in config und functions.
in config sei z.B. path="dir/subdir/"
in main rufe ich eine funktion aus functions auf, die path benötigt.
Wie geht das ?
Verfasst: Montag 24. August 2009, 20:26
von cofi
Code: Alles auswählen
import config
import functions
functions.func(config.path)
Brauchst du die Konfiguration direkt in `functions`, dann importierst du `config` halt.
Verfasst: Montag 24. August 2009, 20:26
von BlackJack
@whaeva: Dann holst Du Dir in der `main()` das `path` aus `config` und übergibst das der Funtkion aus `functions`. Wo ist das Problem?
Verfasst: Dienstag 25. August 2009, 09:06
von whaeva
OK, also alles als Parameter übergeben! Danke!
Verfasst: Dienstag 25. August 2009, 09:29
von whaeva
Da kommt man ja gar nicht zum Programmieren:
in main habe ich ein try...except functions.func(param)
-> NameError: name functions is not defined.
Wär nett wenn ihr mir auch da auf die Sprünge helft :-)
[Erledigt, mein Fehler. Oh je! Namen zu ähnlich..]
Verfasst: Dienstag 25. August 2009, 09:39
von /me
whaeva hat geschrieben:Da kommt man ja gar nicht zum Programmieren:
Doch, doch. Du merkst nur langsam was Programmieren heißt. Wenn man nicht rein Code nach Vorgabe irgendwo hinschreibt, dann muss man sich die Vorgabe nämlich selber machen. Das heißt, dass du die Struktur deiner zu schreibenden Software vor dem Codieren planen solltest.
whaeva hat geschrieben:in main habe ich ein try...except functions.func(param)
-> NameError: name functions is not defined.
Dein angegebenes Codefragment will sich mir nicht so recht erschließen. Ich versuche mal einen Tipp ins Blaue hinein zu geben: Hast du functions denn auch importiert?
Gruß,
Matthias
Verfasst: Dienstag 25. August 2009, 09:55
von whaeva
Ja, importiert wie oben.. Habe den falschen Namen benutzt...