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.
mhh vielleicht könnte man das auch mittels klassen lösen.
ich habe aber schon ziemlich viel code geschrieben und möchte jetzt nicht wieder alles ändern.
Die situation ist die folgende. ich habe ein allgemeines module geschrieben mit dem gewisse operationen durchgeführt werden.
Beim ausführen muss das modul dann aber mit konkreten informationen (geometrischen Formen) gefüttert werden.
Die einzelnen Operationen für die konkreten Geometrien unterscheiden sich natürlich. Diese unterscheidung wollte ich eben mit den entsprechend übergebenen modulen realisieren.
das schreit für einen informatiker sicherlich nach klassen. ich werde aus prakmatsichen gründen aber deine vorgeschlagene variante verwenden zumal ich momentan keine nachteile (ausser ästhetische) erkennen kann.
schneitzmaster hat geschrieben:ja ich meinte die funktionen des moduls müssen mit konkreten argumenten aufgerufen werden.
Und wieso tust Du das dann nicht einfach?
Mir ist das strukturelle Problem einfach noch unklar, welches Du durch "individuelle" Imports lösen willst... und ich habe einfach den Verdacht, dass das total umständlich ist!
okay dann probiere ich es noch mal am konkreten beispiel zu erklären.
Ich habe ein modul A das funktionen beinhaltet um ellipsoide zu vernetzen.
dann habe ich ein modul B das diese vernetzten ellipsoide zu einem komplexen netz hinzufügt in dem es funktionen aus modul A aufruft.
Weiterhin liegt eine "Treiber"-routine vor, die funktionen aus modul B aufruft um schließlich das komplexe netzt zu erzeugen.
Diese "Treiber"-routine möchte ich händisch anpassen können um z.B. nicht ellipsoide sondern evtl. zylinder (beschrieben im modul C) o.ä. zu vernetzten.
Diese anpassung wollte ich mittels dem wechsel der übergabe von modul A in modul C realisieren.
@schneitzmaster: solche Wechsel macht man üblicherweise auf der Ebene von Klassen. Also eine Ellipsoid-Netz-Klasse und eine Zylinder-Netz-Klasse. Natürlich kann man auch ganze Module übergeben, da Module in Python auch nur Objekte sind, ist das problemlos möglich, dann wird aber das Modul nicht in der Unterfunktion importiert, sondern ganz normal auf der übergeordneten Ebene im Hauptprogramm.
@Sirius3: Okay danke für den hinweis. Wie sieht das konkret im code aus? Wie kann ich ein modul im Hauptprogramm übergeben und meine Unterfunktion aus einem anderen Modul weiß davon? Ist der Vorschlag von sparrow solche Variante?