Fehler bei Änderung einer Variable in einer def-Funktion

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
M4thw
User
Beiträge: 1
Registriert: Mittwoch 5. April 2023, 10:39

Hallo!
ich hab eine kleine Frage, weil mein Code nicht so funktioniert wie er soll.
Dieser code:

def test():
a = b

a = 1
b = 2

test()
print(a, b)

==> 1 2

soll eigentlich das machen:

a = 1
b = 2

a = b
print(a, b)

==> 2 2

Wo genau ist der Fehler und wie kann man das verbessern?
Danke schonmal im Vorraus :)
__deets__
User
Beiträge: 14545
Registriert: Mittwoch 14. Oktober 2015, 14:29

Der Fehler ist zu denken, dass lokale Variablen in einer Funktion rueckwirken wuerden auf globalen Zustand. Das waere eine Katastrophe, wenn es passieren wuerde - du schreibst eine neue Funktion, und hast den gleichen Namen, und ploetzlich kracht alles.

Die Loesung in diesem Fall ist ganz einfach: Funktionen geben ihre Ergebnisse per return zurueck, und bekommen ihre Argument. Also so etwa:

Code: Alles auswählen

def tuwas(a, b):
    return a*2, b + 3

def main():
    a = 10
    b = 20
    a, b = tuwas(a, b)
    print(a, b)

if __name__ == "__main__":
     main()
In Zukunft auch bitte code-tags verwenden, damit die in Python wichtigen Einrueckungen erhalten bleiben.
Antworten