Sobes.tech
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á sa 2.
  • 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á sa 4.

Takto každý print ukáže aktuálny stav zmeniteľného predvoleného argumentu, ktorý si medzi volaniami zachováva zmeny.