ID: 2919 OOP - Podstawy Średnie

Źródło: Arkusze CKE

Jaki będzie wynik działania poniższego kodu w języku Python?
def fun(x, l=[]):
l.append(x)
return l

print(fun(1))
print(fun(2))
print(fun(3, []))
print(fun(4))

Warianty odpowiedzi

  1. A

    [1], [2], [3], [4, 3]

  2. B

    [1], [1, 2], [3], [1, 2, 4]

  3. C

    [1], [1, 2], [3], [3, 4]

  4. D

    [1], [2], [3], [4]

Wyjaśnienie

To klasyczna pułapka w Pythonie związana z domyślnymi argumentami funkcji.

W Pythonie domyślna wartość argumentu l=[] jest tworzona tylko raz, w momencie definiowania funkcji. Ta sama lista jest potem modyfikowana przy kolejnych wywołaniach, jeśli nie podamy własnego argumentu.

Pierwsze i drugie wywołanie korzystają z tej samej domyślnej listy, dodając do niej odpowiednio 1 oraz 2.

Trzecie wywołanie dostaje nową, pustą listę przekazaną w argumencie, więc zwraca osobny wynik [3]. Czwarte wywołanie znów sięga do domyślnej listy, w której były już liczby 1 i 2, i dopisuje do niej 4, co daje [1, 2, 4].

Sprawdź się w praktyce

Rozwiąż pełny test próbny INF.04 albo wylosuj pojedyncze pytanie na szybką powtórkę.

Podobne pytania — OOP - Podstawy