Reading `__defaults__` After Mutation

Continuing with the two functions from before:

def accumulate(x, bucket=[]):
    bucket.append(x)
    return bucket

def replace(x, bucket=[]):
    bucket = bucket + [x]
    return bucket

accumulate(1)
accumulate(2)
replace(1)
replace(2)

print(accumulate.__defaults__)
print(replace.__defaults__)
What do the two print calls show?

A

A TypeError, because __defaults__ isn't reassignable after calls mutate the parameter

B

([1, 2],) then ([],)

C

([1, 2],) then ([1, 2],)

D

([],) then ([],)