مقدار پیشفرض پارامتر یک بار هنگام تعریف تابع ساخته میشه، نه در هر بار اجرای تابع. items=[] ممکن هست فهرست مشترکی بین اجراهای تابع نگه داره. برای «هر بار سبد تازه» این درست نیست.
add_item(item, items=None) رو اصلاح کن: اگه items داده نشد یا None بود، فهرست خالی تازه بساز. اگه فهرست داده شد، اول کپی بگیر. سپس item رو اضافه کن و فهرست جدید برگردان. ورودی نباید تغییر کند.
برای None از is None استفاده کن؛ if not items فهرست خالی رو هم نبودن ورودی حساب میکنه و قصد ما رو دقیق بیان نمیکنه. نام پارامتر محلی هست، اما محلی بودن نام جلوی تغییر شیء مشترک رو نمیگیرد.
بعد از اصلاح دو بار جدا add_item("a") رو اجرا کن؛ هر دو پاسخ فقط ["a"] باشن.
تابع basket_demo آماده هست: دو بار بدون فهرست و یک بار با فهرست فراخوانی میکنه، سپس هر سه پاسخ و ورودی رو کنار هم میذاره. فقط add_item رو اصلاح کن. این کار اثر چند بار اجرای پشت سر هم رو هم قابل بررسی میکنه.
فعالیت شما
پیشفرض مشترک رو حذف کن و همیشه فهرست مستقل برگردان.