Sobes.tech
Junior — Middle
74

Aké potenciálne problémy môžu nastať pri použití meniteľných objektov ako predvolených hodnôt argumentov v Python funkciách?

Odpoveď od 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], а не [2]

Чтобы избежать этой проблемы, обычно используют значение по умолчанию None и внутри функции создают новый объект:

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

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