global alternative Python?
# Hey, welcje alternativen gibt
es zu globalen Variablen in Funktionen?
Beispielcode:
def a():
b = Input("Bla...")
return b
def c():
d = b + 2
return d
2 Antworten
Ein Konzept wie lokale static-Variablen gibt es in Python leider nicht. Für ein Singleton Pattern musst Du etwas tricksen:
def a():
if a.a is None:
a.a = input("a=")
return a.a
a.a = None
Hier wird die versteckte Variable a.a nur beim ersten Aufruf initialisiert. Falls die Abfrage in a() zu teuer ist, weil die Funktion extrem oft aufgerufen wird, kann die Funktion sich beim ersten Aufruf umdefinieren:
def a():
aa = input("a=")
global a
a = lambda: aa
return aa
Solche Konstrukte sind aber äußerst unüblich. Man könnte damit zum Beispiel Ressourcen (Images, Fonts, ...) implementieren, die erst dann instantiiert werden, wenn sie irgendwo gebraucht werden.
Gewöhnlich schreibt man besser eine Klasse, die im Konstruktor alle nötigen Variablen einliest oder anderweitig initialisiert. Die kann dann an jede Funktion übergeben werden, die einen oder mehrere Werte daraus braucht.
Cool danke werde ich gleich Mal mit einer Klasse ausprobieren
Variablen innerhalb einer Funktion sind lokal für die Funktion und nicht global. Was meinst du?
Du rufst a() auf, statt b + 2, also a() + 2, du machst einen Funktionsaufruf um den Wert zu bekommen.
Achso du musst noch value_numbers auf 5 ändern
Ich hatte den Code vor paar Tagen einem discor User geschickt. Er meinte, dass ich komplett auf globale Variablen verzichten, und stattdessen alle als Parameter übergeben solle.
Leider habe ich 0 plan wie weil ich ja die Variablen erst in der Funktion einen Wert übergebe und der ja bei jedem Durchlauf der Funktion anders ist.(ich lerne erst seit einem Monat und habe bis jetzt nur folgendes gelernt:
def a(name):
print (f"Hallo {Name}")
a("Max")
Ich Hefte dir Mal den Code untern rein. (Er ist noch unvollständig weil ich ihn gerade umbauen und shorten will):