def changer(x, y): x = 2 # changes local name's value only y[0] = 'spam' # changes shared object in place X = 1 L = [1, 2] changer(X, L) # pass immutable and mutable print X, L L = [1, 2] changer(X, L[:]) # pass a copy print X, L