Senior
Čo vypíše každý print vo funkcii s meniteľným predvoleným argumentom?
sobes.tech AI
Odpoveď od AI
V jazykoch, kde funkcie môžu mať predvolené mutabilné (meniteľné) argumenty, napríklad v Pythone, sa predvolené hodnoty inicializujú raz pri definovaní funkcie, nie pri každom volaní. To vedie k tomu, že ak je predvolený argument zmeniteľný objekt (napríklad zoznam alebo slovník), zmeny tohto objektu pretrvávajú medzi volaniami.
Príklad v Pythone:
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]
Vysvetlenie:
- Pri prvom volaní
func(1)sa používa predvolený zoznam[], do ktorého sa pridá1. - Pri druhom volaní
func(2)sa používa ten istý zoznam, teraz[1], a pridá sa2. - Pri volaní
func(3, ['x'])sa odovzdá nový zoznam['x'], takže zmeny neovplyvňujú predvolený. - Pri poslednom volaní
func(4)sa znovu používa predvolený zoznam, ktorý teraz obsahuje[1, 2], a pridá sa4.
Takto každý print ukáže aktuálny stav zmeniteľného predvoleného argumentu, ktorý si medzi volaniami zachováva zmeny.