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 az1. - A második hívásnál
func(2)ugyanazt a listát használja, most[1], és hozzáadódik a2. - 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 a4.
Í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.