Senior
Co wyświetli każdy print w funkcji z domyślnym argumentem mutowalnym?
sobes.tech AI
Odpowiedź od AI
W językach, w których funkcje mogą mieć domyślne argumenty mutowalne (zmienialne), takich jak Python, wartości domyślne są inicjowane raz podczas definiowania funkcji, a nie przy każdym wywołaniu. To oznacza, że jeśli argument domyślny jest obiektem mutowalnym (np. lista lub słownik), zmiany tego obiektu pozostają między wywołaniami.
Przykład w Pythonie:
def func(a, lst=[]):
lst.append(a)
print(lst)
func(1) # Wypisze: [1]
func(2) # Wypisze: [1, 2]
func(3, ['x']) # Wypisze: ['x', 3]
func(4) # Wypisze: [1, 2, 4]
Wyjaśnienie:
- Przy pierwszym wywołaniu
func(1)używana jest domyślna lista[], do której dodawane jest1. - Przy drugim wywołaniu
func(2)używana jest ta sama lista, teraz[1], i dodawane jest2. - Przy wywołaniu
func(3, ['x'])przekazywana jest nowa lista['x'], więc zmiany nie wpływają na domyślną. - Przy ostatnim wywołaniu
func(4)ponownie używana jest domyślna lista, która teraz zawiera[1, 2], i dodawane jest4.
W ten sposób każde wywołanie print wyświetli aktualny stan zmiennego argumentu domyślnego, który zachowuje zmiany między wywołaniami.