Variablen übergeben

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
Jyll
User
Beiträge: 26
Registriert: Montag 26. Juli 2021, 14:18

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.
__deets__
User
Beiträge: 14522
Registriert: Mittwoch 14. Oktober 2015, 14:29

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.
nezzcarth
User
Beiträge: 1633
Registriert: Samstag 16. April 2011, 12:47

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.
Sirius3
User
Beiträge: 17737
Registriert: Sonntag 21. Oktober 2012, 17:20

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.
Jyll
User
Beiträge: 26
Registriert: Montag 26. Juli 2021, 14:18

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.
Antworten