The default arguments are set upon function definition. Changing mutable arguments inside a function has a side effect when working with default values, for example:
def my_list(x1, x2 = []):
x2.append(x1)
return x2
my_list(1) # returns [1]
my_list(2) # returns [1,2]
Recall, lists are mutable objects.