Senior
Was gibt jeder print in einer Funktion mit einem veränderlichen Standardargument aus?
sobes.tech KI
Antwort von AI
In Sprachen, in denen Funktionen standardmäßig mutable (änderbare) Argumente haben können, wie in Python, werden Standardwerte einmal bei der Definition der Funktion initialisiert, nicht bei jedem Aufruf. Das führt dazu, dass wenn das Standardargument ein veränderbares Objekt ist (z.B. eine Liste oder ein Wörterbuch), die Änderungen an diesem Objekt zwischen den Aufrufen erhalten bleiben.
Beispiel in Python:
def func(a, lst=[]):
lst.append(a)
print(lst)
func(1) # Gibt aus: [1]
func(2) # Gibt aus: [1, 2]
func(3, ['x']) # Gibt aus: ['x', 3]
func(4) # Gibt aus: [1, 2, 4]
Erklärung:
- Beim ersten Aufruf
func(1)wird die Standardliste[]verwendet, in die1eingefügt wird. - Beim zweiten Aufruf
func(2)wird die gleiche Liste verwendet, jetzt[1], und2wird hinzugefügt. - Beim Aufruf
func(3, ['x'])wird eine neue Liste['x']übergeben, daher beeinflussen die Änderungen nicht die Standardliste. - Beim letzten Aufruf
func(4)wird wieder die Standardliste verwendet, die jetzt[1, 2]enthält, und4wird hinzugefügt.
Jede Ausgabe zeigt somit den aktuellen Zustand des veränderbaren Standardarguments, das Änderungen zwischen den Aufrufen beibehält.