What happens is as follows:
When a python function is called, it is evaluated in the environment in which it was defined and not the environment in which it was called although the second part is secondary ( no pun intended) for the purpose of answering your question.
The default arguments are evaluated only once at the time of function definition. This creates a closure. Think of closure as function code + environment in which the function was been defined.
So in this case when the function was defined, L was assigned to [] and now every subsequent call to the function will use this value of L.
The tutorial also mentions:
The default values are evaluated at the point of function definition in the defining scope (and the defining scope is part of the closure along with function code)
http://docs.python.org/2/tutorial/controlflow.html#default-argument-values