B006 Python исправление ошибки профилирования

Всем доброго времени суток, используя профилирование выявил ошибку BOO6: Do not use mutable data structures for argument defaults. They are created during function definition time. All calls to the function reuse this one instance of that data structure, persisting changes between them.

Как её возможно исправить? Код прилагаю

# Функция получения кодовых последовательностей

def code_in(root, codes=dict(), code=''):
    if root is None:
        return

    if isinstance(root.value, str):
        codes[root.value] = code
        return codes

    code_in(root.left, codes, code + '0')
    code_in(root.right, codes, code + '1')
    return codes

Ответы (1 шт):

Автор решения: eri
def code_in(root, codes=None, code=''):
    if not codes:
        codes = dict()

    if root is None:
        return

    if isinstance(root.value, str):
        codes[root.value] = code
        return codes

    code_in(root.left, codes, code + '0')
    code_in(root.right, codes, code + '1')
    return codes

Перенесите создание дефолтных значений внутрь функции

→ Ссылка