Senior
Co vypíše každý print ve funkci s měnitelným výchozím argumentem?
sobes.tech AI
Odpověď od AI
V jazycích, kde funkce mohou mít výchozí mutabilní (měnitelné) argumenty, například v Pythonu, jsou výchozí hodnoty inicializovány pouze při definici funkce, nikoli při každém volání. To vede k tomu, že pokud je výchozí argument změnitelný objekt (například seznam nebo slovník), změny tohoto objektu přetrvávají mezi voláními.
Příklad v Pythonu:
def func(a, lst=[]):
lst.append(a)
print(lst)
func(1) # Vypíše: [1]
func(2) # Vypíše: [1, 2]
func(3, ['x']) # Vypíše: ['x', 3]
func(4) # Vypíše: [1, 2, 4]
Vysvětlení:
- Při prvním volání
func(1)se používá výchozí seznam[], do kterého se přidá1. - Při druhém volání
func(2)se používá stejný seznam, nyní[1], a přidá se2. - Při volání
func(3, ['x'])je předán nový seznam['x'], takže změny neovlivňují výchozí. - Při posledním volání
func(4)se znovu používá výchozí seznam, který nyní obsahuje[1, 2], a přidá se4.
Tímto způsobem každé print zobrazí aktuální stav měnitelného výchozího argumentu, který si mezi voláními zachovává změny.