def add_item(item, bucket=[]):
bucket.append(item)
return bucket
print(add_item("a"))
print(add_item("b"))
# Safe version
def add_item_safe(item, bucket=None):
if bucket is None:
bucket = []
bucket.append(item)
return bucket
print(add_item_safe("a"))
print(add_item_safe("b"))Перша функція повторно використовує один список, створений під час визначення функції, тому стан протікає між викликами. Безпечна версія створює новий список для кожного виклику без bucket.
Очікуваний результат: Помилкові виклики друкують ['a'], потім ['a', 'b']; безпечні — ['a'], потім ['b'].