Загружаем изображение…

☠️ Самая частая ошибка новичков в 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
Просмотры: 688
Открыть в MAX Сообщить о неточности

Репосты публикации

Публикация канала

Сообщить о неточности

Опишите, что нужно исправить. Если есть источник, добавьте ссылку.

Вы покидаете datool.ru

Ссылка ведёт на внешний сайт. datool.ru не отвечает за его содержимое — проверьте адрес, прежде чем вводить пароли или платёжные данные.

Переход через 10 с

Перейти