Sobes.tech
Senior

Mit ír ki minden print egy olyan függvényben, amelynek alapértelmezett módosítható argumentuma van?

sobes.tech MI

Válasz az MI-től

Olyan nyelvekben, ahol a függvények alapértelmezett mutálható (változtatható) argumentumokat tartalmazhatnak, például Pythonban, az alapértelmezett értékek egyszer kerülnek inicializálásra a függvény definiálásakor, nem minden híváskor. Ez azt eredményezi, hogy ha az alapértelmezett argumentum egy változtatható objektum (például lista vagy szótár), akkor ezek a változások a hívások között megmaradnak.

Példa Pythonban:


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

func(1)  # Kiírja: [1]
func(2)  # Kiírja: [1, 2]
func(3, ['x'])  # Kiírja: ['x', 3]
func(4)  # Kiírja: [1, 2, 4]

Magyarázat:

  • Az első hívásnál func(1) az alapértelmezett lista [] használatával történik, amelyhez hozzáadódik az 1.
  • A második hívásnál func(2) ugyanazt a listát használja, most [1], és hozzáadódik a 2.
  • A func(3, ['x']) hívásnál egy új listát adunk át ['x'], így a változások nem befolyásolják az alapértelmezett listát.
  • Az utolsó hívásnál func(4) ismét az alapértelmezett listát használja, amely most [1, 2], és hozzáadódik a 4.

Így minden print a változtatható alapértelmezett argumentum aktuális állapotát mutatja, amely megőrzi a változásokat a hívások között.