# the default [] is built ONCE and reused across calls
def buggy(item, bucket=[]):
bucket.append(item)
return bucket
print(buggy(1))
print(buggy(2))
# the fix: sentinel None, then a fresh list each call
def safe(item, bucket=None):
if bucket is None:
bucket = []
bucket.append(item)
return bucket
print(safe(1))
print(safe(2))a default list is created once and shared