Sobes.tech
Junior — Middle
104

Waarom wordt het niet aanbevolen om wijzigbare objecten te gebruiken als standaardwaarden bij het definiëren van functies in Python?

Bedrijven waar gevraagd werd
Медси

Antwoord van AI

sobes.tech AI

В Python значения по умолчанию для параметров функции вычисляются один раз при определении функции, а не при каждом вызове. Если использовать изменяемый объект (например, список или словарь) в качестве значения по умолчанию, то все вызовы функции будут использовать один и тот же объект. Это может привести к неожиданным побочным эффектам, когда изменения в этом объекте сохраняются между вызовами.

Пример:

def add_item(item, items=[]):
    items.append(item)
    return items

print(add_item(1))  # [1]
print(add_item(2))  # [1, 2] — ожидаемо? Нет!

Правильный способ — использовать None и создавать новый объект внутри функции:

def add_item(item, items=None):
    if items is None:
        items = []
    items.append(item)
    return items

Так каждый вызов будет работать с новым списком.