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...