Sobes.tech
Senior

Šta će prikazati svaki print u funkciji sa promenljivim podrazumevanim argumentom?

sobes.tech АИ

Одговор од АИ

U jezicima gde funkcije mogu imati podrazumevane mutabilne (izmenjive) argumente, kao što je Python, podrazumevane vrednosti se inicijalizuju jednom prilikom definisanja funkcije, a ne pri svakom pozivu. To dovodi do toga da ako je podrazumevani argument promenljiv objekat (npr. lista ili rečnik), promene na tom objektu ostaju između poziva.

Primer u Pythonu:


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

func(1)  # Ispisaće: [1]
func(2)  # Ispisaće: [1, 2]
func(3, ['x'])  # Ispisaće: ['x', 3]
func(4)  # Ispisaće: [1, 2, 4]

Objašnjenje:

  • Pri prvom pozivu func(1) koristi se podrazumevana lista [], u koju se dodaje 1.
  • Pri drugom pozivu func(2) koristi se ista lista, sada [1], i dodaje se 2.
  • Pri pozivu func(3, ['x']) prosleđuje se nova lista ['x'], tako da promene ne utiču na podrazumevanu.
  • Pri poslednjem pozivu func(4) ponovo se koristi podrazumevana lista, koja sada sadrži [1, 2], i dodaje se 4.

Na ovaj način, svaki print će prikazati trenutno stanje promenljivog podrazumevanog argumenta, koji čuva promene između poziva.