def foo(li=[]):
li.append(1)
print(li)
foo([2])
# Out: [2, 1]
foo([3])
# Out: [3, 1]
This code behaves as expected, but what if we don't pass an argument?
foo()
# Out: [1] As expected...
foo()
# Out: [1, 1] Not as expected...
This is because default arguments of function...