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