Hallo liebe Gemeinde, tue mich gerade etwas schwer und bin immer noch neu.
Also ich möchte gerne in meiner Datei "A.py" ca. 20 Variablen, bzw. Parameter (kann natürlich auch eine Liste sein) festlegen. Das ganz dort in einer bzw. mehreren Funktion/en (def montag, def dienstag(), def mittwoch() usw.), damit ich sie entsprechend Schedule-Zeitaufruf an eine Datei B.py oder C.py (je nach Funktionsaufruf) übergeben kann.
Das heißt, die Parameter werden/können in jeder Funktion in der Scheduledatei "A" anders sein. Die Parameter sind hauptsächlich Zahlen und ein bis zwei Strings. Z.B. par_montag = [1, 2, 0, 'blau', 0, 'Bild3'].
Die Datei A ist, wie geschrieben, eine Schedule.py. Das heißt, ich möchte bevor die richtige Unterdatei (B.py, C.py, usw.) aufgerufen wird diese in "A" vordefinierten Variabeln/Parameter übergeben, damit das Unterprogramm damit entsprechend weiterarbeitet. Aber was ich auch mache, es klappt nicht. Die Variableliste müsste wegen der vielen Funktionen in A flexible und unterschiedlich sein.
Hoffe, ich hab mich einigermaßen verständlich ausgedrückt.
Danke für die Hilfe.
Variablen übergeben
Das klingt alles sehr konfus. Und falsch. Wenn man einen Programmlauf parametrrisieren will (so klingt das), dann erstellt man ein Objekt mit dieser Konfiguration (zb durch einlesen einer Datei), und reicht das an den Betroffenen Code als Argument weiter.
Ich bin mir nicht ganz sicher, ob ich das im Detail alles richtig verstanden habe, da mir das doch sehr "verstreut" auf verschiedene Datei erscheint, aber zwei Punkte fallen mir auf:
Deine Schedule-Datei klingt nach einer Konfigurationsdatei. Python hat mehrere Module in dafür in der Standardbibliothek (z. B. configparser, wenn es gut händisch editierbar sein soll).
Eine typische Funktion bildet eine Aktion auf generalisierte Weise in Code ab. Sie kann Parameter haben und gibt idealerweise etwas zurück. 'montag' klingt aber nicht wie eine Aktion, sondern, so wie du es beschreibst, eher wie eine Gruppierung von Werten. Zur Gruppierung von Werten verwendet man jedoch Datenstrukturen.
Leider kenne ich die Details deines Programms nicht. Ein typischer generischer Aufbau wäre jedenfalls, dass das Programm die genannte eine Konfigurationsdatei einliest und die dort enthaltenen Werte dann als Parameter verwendet, um einzelne Funktionen damit aufzurufen, die nach Möglichkeit so allgemein gestaltet sind, dass man sie gut wiederverwenden kann.
Deine Schedule-Datei klingt nach einer Konfigurationsdatei. Python hat mehrere Module in dafür in der Standardbibliothek (z. B. configparser, wenn es gut händisch editierbar sein soll).
Eine typische Funktion bildet eine Aktion auf generalisierte Weise in Code ab. Sie kann Parameter haben und gibt idealerweise etwas zurück. 'montag' klingt aber nicht wie eine Aktion, sondern, so wie du es beschreibst, eher wie eine Gruppierung von Werten. Zur Gruppierung von Werten verwendet man jedoch Datenstrukturen.
Leider kenne ich die Details deines Programms nicht. Ein typischer generischer Aufbau wäre jedenfalls, dass das Programm die genannte eine Konfigurationsdatei einliest und die dort enthaltenen Werte dann als Parameter verwendet, um einzelne Funktionen damit aufzurufen, die nach Möglichkeit so allgemein gestaltet sind, dass man sie gut wiederverwenden kann.
Dass du von "etwas an eine Datei B.py übergeben" schreibst, zeigt, dass du eine falsche Vorstellung davon hast, was Module sind. B.py ist ein Modul, eine Sammlung von Funktionen. Man kann Funktionen Parameter übergeben, aber nicht Modulen.
Zeig am besten anhand eines Beispiels, was Du eigentlich machen willst. Code zu umschreiben ist deutlich schwieriger zu verstehen, als den tatsächlichen Code zu lesen.
Zeig am besten anhand eines Beispiels, was Du eigentlich machen willst. Code zu umschreiben ist deutlich schwieriger zu verstehen, als den tatsächlichen Code zu lesen.
Hallo @Sirius3, @nezzcarth,
Danke, Ihr habt mir die Richtung gewiesen. Hab gestern noch mal alles umgestellt. Als Du, @Sirius letztendlich über die Module geschrieben hast, wurde mir mein Denkfehler klar. So rum konnte es nicht's werden. Jetzt importiere ich die Module und Funktionen jeweils ins Hauptprogramm und bestimme da die Parameter - oh man . Nochmal Danke.
Danke, Ihr habt mir die Richtung gewiesen. Hab gestern noch mal alles umgestellt. Als Du, @Sirius letztendlich über die Module geschrieben hast, wurde mir mein Denkfehler klar. So rum konnte es nicht's werden. Jetzt importiere ich die Module und Funktionen jeweils ins Hauptprogramm und bestimme da die Parameter - oh man . Nochmal Danke.