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 dodaje1. - Pri drugom pozivu
func(2)koristi se ista lista, sada[1], i dodaje se2. - 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 se4.
Na ovaj način, svaki print će prikazati trenutno stanje promenljivog podrazumevanog argumenta, koji čuva promene između poziva.