Seite 1 von 1
Multiple Variablen in anderer .py Datei nutzen
Verfasst: Sonntag 30. Oktober 2022, 13:23
von drnicolas
Ich habe mein Projekt in mehrere einzelne Dateien aufgesplittet.
Entsprechend rufe ich aus 1.py Funktionen in 2.py auf.
Gleichzeitig habe ich aber in 1.py eine ganze Reihe von Variablen, die eigentlich auch in 2.py bekannt sein sollen - grob alle möglichen Konfigurationseinstellungen
Wie übergebe ich diese Variablen, resp. wie mache ich diese Variablen in 2.py bekannt?
Das hat nicht gut funktioinert:
- ich importiere die Variablen von 1.py in 2.py, etwa so ...
Das funktioniert zwar, enthält aber nur die Default-Werte, mit denen ich die Varaiblen in 1.py vrobelegt habe.
Die Änderungen, beispeilsweise durch cmdline-Parameter tauchen da überraschenderweise nicht auf.
Vielleicht ist mein Verfahren aber auch grundlegend verkehrt.
Re: Multiple Variablen in anderer .py Datei nutzen
Verfasst: Sonntag 30. Oktober 2022, 14:18
von __deets__
Globaler Zustand, der nachträglich verändert wird, ist grundlegend verkehrt. Darum sollte man das schlicht nicht machen. Wenn deine Funktionen Einstellungen brauchen, übergib die als simple Argumente an deine Funktion.
Der Import den du verwendest Holt dir die Werte gebunden an die Namen in dein Modul. Dadurch sieht man da keine Änderungen. Ein simples “import one” und Zugriffe mit “one.wert” löst das. Aber nochmal: globale Variablen sind grundlegend Verkehrt.
Re: Multiple Variablen in anderer .py Datei nutzen
Verfasst: Sonntag 30. Oktober 2022, 14:21
von noisefloor
Hallo,
alles, was du importierst, hat den Wert zum Zeitpunkt des Imports. Egal ob Variable oder Funktion oder Klasse. Und das ist ja auch genau richtig so, weil du sonst ja nicht wirklich weiß, was du genau importiert hast.
Gruß, noisefloor
Re: Multiple Variablen in anderer .py Datei nutzen
Verfasst: Sonntag 30. Oktober 2022, 14:30
von drnicolas
Schon umgesetzt.
Leider keine Änderung. Es kommen genau wieder die Deafult-Werte wie mit der ursprünglichen Variante.
Re: Multiple Variablen in anderer .py Datei nutzen
Verfasst: Sonntag 30. Oktober 2022, 14:48
von __deets__
Da wirst du mehr Code zeigen müssen. Aber nochmal: so macht man das nicht.
Re: Multiple Variablen in anderer .py Datei nutzen
Verfasst: Montag 31. Oktober 2022, 07:55
von drnicolas
Wie wäre denn ein besserer Weg?
Ich habe recht viele Konfigurationsvariablen. Die sind fast alle mit Default-Werten belegt, werden dann aber durch Parameter modifiziert
Diese "globalen" Variablen werden in mehr oder minder grosser Zahl in verschiedenen Funktionen benötigt.
Jede Variable als Parameter zu übergeben ist sicherlich machbar, gibt aber z.T. endlose Übergabelisten
Ich bin unerfahren in python.
In C würde ich das mit einer struct machen und in weiteren Dateien mit import der .h-Datei den Aufbau der struct bekannt machen.
Re: Multiple Variablen in anderer .py Datei nutzen
Verfasst: Montag 31. Oktober 2022, 08:02
von __deets__
Das geht ja auch in Python. Zb kannst du dir eine Datenklasse (gibt ein eingebautes Modul) machen, und die reinreichen.
Re: Multiple Variablen in anderer .py Datei nutzen
Verfasst: Montag 31. Oktober 2022, 08:06
von Sirius3
In Python gibt es Klassen. Aber selbst die Configparser-Instanz herumzureichen ist schon besser, als globale Variablen. Wenn eine Funktion eine große Zahl an Variablen braucht, dann ist das ein Zeichen dafür, dass die Funktion zu viele verschiedene Dinge macht und besser in mehrere aufgeteilt sein sollte.