Sobes.tech
Back to questions
Junior — Middle
48

Каким образом реализовать функцию в Python с аргументом по умолчанию, который можно изменять внутри функции?

Answer from AI

sobes.tech AI

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

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


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

# Пример использования
print(add_item(1))  # [1]
print(add_item(2))  # [2], а не [1, 2]

Такой подход позволяет изменять аргумент внутри функции без риска повлиять на значение по умолчанию между вызовами.