Sobes.tech
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 die 1 eingefügt wird.
  • Beim zweiten Aufruf func(2) wird die gleiche Liste verwendet, jetzt [1], und 2 wird 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, und 4 wird hinzugefügt.

Jede Ausgabe zeigt somit den aktuellen Zustand des veränderbaren Standardarguments, das Änderungen zwischen den Aufrufen beibehält.