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.