Sobes.tech
Senior

Wat toont elke print in een functie met een mutable standaardargument?

sobes.tech AI

Antwoord van AI

In talen waar functies standaard mutabele (wijzigbare) argumenten kunnen hebben, zoals in Python, worden standaardwaarden één keer geïnitialiseerd bij het definiëren van de functie, niet bij elke oproep. Dit betekent dat als het standaardargument een mutabel object is (bijvoorbeeld een lijst of een woordenboek), de wijzigingen aan dat object tussen oproepen behouden blijven.

Voorbeeld in Python:


def func(a, lst=[]):
    lst.append(a)
    print(lst)

func(1)  # Output: [1]
func(2)  # Output: [1, 2]
func(3, ['x'])  # Output: ['x', 3]
func(4)  # Output: [1, 2, 4]

Uitleg:

  • Bij de eerste oproep func(1) wordt de standaardlijst [] gebruikt, waaraan 1 wordt toegevoegd.
  • Bij de tweede oproep func(2) wordt dezelfde lijst gebruikt, nu [1], en wordt 2 toegevoegd.
  • Bij de oproep func(3, ['x']) wordt een nieuwe lijst ['x'] doorgegeven, dus de wijzigingen beïnvloeden de standaardlijst niet.
  • Bij de laatste oproep func(4) wordt opnieuw de standaardlijst gebruikt, die nu [1, 2] bevat, en wordt 4 toegevoegd.

Op deze manier toont elke print de huidige toestand van het wijzigbare standaardargument, dat de wijzigingen tussen oproepen behoudt.