Использование изменяемых объектов (списков, словарей, множеств) в качестве параметров по умолчанию приводит к тому, что значение по умолчанию создается один раз при определении функции. При каждом вызове функции без явного указания значения этого параметра, будет использоваться тот же экземпляр объекта. Последующие изменения этого объекта в одном вызове функции будут сохраняться и влиять на следующие вызовы.
Пример неудачного случая:
python
python
python
python
Как исправить:
Использовать неизменяемый объект (обычно None) в качестве значения по умолчанию и инициализировать изменяемый объект внутри функции, если параметр не был передан.
python
python
python
python