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
Перенесите создание дефолтных значений внутрь функции