Eine Variable außerhalb einer Funktion verfügbar machen

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
THE_PYTHON_GUY
User
Beiträge: 18
Registriert: Samstag 6. November 2021, 09:58

Hallo,

wie kann man eine Variable die innerhalb einer Funktion festgelegt wurde außerhalb jener Funktion aufrufen?

Beispiel:

Code: Alles auswählen

def function():
	var = 5
function()
print(var)
Ich weiß in diesem Beispiel kann man das mit return machen, aber in meinem Fall nicht.

THE PYTHON GUY
__deets__
User
Beiträge: 14545
Registriert: Mittwoch 14. Oktober 2015, 14:29

Was ist dein Fall? Warum geht das da nicht? Wenn es hier auch um GUI Programmierung geht, dann sind im Zweifel Klassen/ Objekte die Antwort.
Benutzeravatar
pillmuncher
User
Beiträge: 1530
Registriert: Samstag 21. März 2009, 22:59
Wohnort: Pfaffenwinkel

Das macht man so nicht. Alles, was eine Funktion benötigt, bekommt sie als Argument übergeben. Alles, was sie berechnet, gibt sie mittels return zurück. Wenn man Zustand (Werte) und Verhalten (Funktionen) koppeln will, verwendet man Klassen:

Code: Alles auswählen

class Foo:
    def __init__(self, start_value):
        self.value = start_value
    def increase(self):
        self.value += 1

foo = Foo(123)
print(foo.value)  #  123
foo.increase()
print(foo.value)  #  124
In specifications, Murphy's Law supersedes Ohm's.
THE_PYTHON_GUY
User
Beiträge: 18
Registriert: Samstag 6. November 2021, 09:58

@_deets_

Ja, es geht um GUI Programmierung. Konkret um ein Texteingabefeld und die dazugehörige Variable.
Wie würde man damit Klassen "hantieren"?
PeterL
User
Beiträge: 95
Registriert: Samstag 6. März 2021, 18:39

Hallo ich weis nicht genau was du meinst, aber ich denke das du den Befehl global verwenden solltest. Ich habe da einen Link gefunden.

https://www.w3schools.com/python/python ... global.asp
Benutzeravatar
pillmuncher
User
Beiträge: 1530
Registriert: Samstag 21. März 2009, 22:59
Wohnort: Pfaffenwinkel

PeterL hat geschrieben: Freitag 11. Februar 2022, 23:47 ...ich denke das du den Befehl global verwenden solltest....
Das ist genau das Gegenteil davon, was man tun sollte. global benutzt man nicht. Es gibt immer andere, bessere Wege.
In specifications, Murphy's Law supersedes Ohm's.
imonbln
User
Beiträge: 191
Registriert: Freitag 3. Dezember 2021, 17:07

THE_PYTHON_GUY hat geschrieben: Freitag 11. Februar 2022, 23:41 @_deets_

Ja, es geht um GUI Programmierung. Konkret um ein Texteingabefeld und die dazugehörige Variable.
Wie würde man damit Klassen "hantieren"?
Das Texteingabefeld ist schon eine Klasse und die hat sicher eine Methode, welche den Text aus der Eingabe zurückgibt
bei tk.Text Widget wäre es get(), und wenn du ein anderes Grafik-Framework verwendest, gibt es sicher eine andere Methode, aber insgesamt haben die Entwickler da schon was vorgehen.

Code: Alles auswählen

 gesammter_Text = mytextwidget.get('1.0', tk.END)
Sirius3
User
Beiträge: 18279
Registriert: Sonntag 21. Oktober 2012, 17:20

@THE_PYTHON_GUY: hier im Forum beantwortet jeder zweite Beitrag eine Frage mit GUI, wie man das mit Klassen löst. Einfach mal stöbern.
Antworten