🔍 Продолжаем разбирать фрагменты кода, в которых всё выглядит правильно до тех пор, пока программа не начинает работать не так, как ожидалось. Сегодня под микроскопом небольшой пример на 📱 Python, который регулярно становится причиной багов даже у опытных разработчиков def add_item(item, items=[]): items.append(item) return items print(add_item("apple")) print(add_item("banana")) Вопрос: Что выведет программа? Многие ожидают такой результат: ['apple'] ['banana'] Но на самом деле вывод будет другим: ['apple'] ['apple', 'banana'] Почему так происходит 💬 На первый взгляд кажется, что при каждом вызове функции создаётся новый пустой список: items=[] Но в Python аргументы по умолчанию создаются один раз, в момент объявления функции, а не при каждом её вызове. То есть список items сохраняется между вызовами функции. ↔️Что происходит по шагам: 🎯 Первый вызов: add_item("apple") В список добавляется "apple": ['apple'] 🎯 Второй вызов: add_item("banana") Используется тот