☠️ Самая частая ошибка новичков в Python Посмотрите на этот код.
Посмотрите на этот код. Как думаете, что пошло не так?
def add_item(item, basket=[]):
basket.append(item)
return basket
print(add_item("Яблоко"))
print(add_item("Банан"))
Ожидание:
['Яблоко']
['Банан']
Реальность:
['Яблоко']
['Яблоко', 'Банан'] 😱
Почему так произошло?
В Python аргументы по умолчанию создаются один раз при запуске программы (когда интерпретатор читает def), а не при каждом вызове функции. Поэтому список basket - это один и тот же объект в памяти для всех вызовов!
✅ Как писать правильно:
Используйте None как маркер пустого значения.
def add_item(item, basket=None):
if basket is None:
basket = []
basket.append(item)
return basket
Сохраняй пост, чтобы не наступать на эти грабли! 💾
Подписывайтесь на канал 👉 @python_of