MRAB <pyt...@mrabarnett.plus.com> writes: > On 2015-11-19 00:34, fl wrote: > > What does 'del' do? It does not look like a thorough list deletion > > from the effect. > > No, "del list1" doesn't delete the list, it deletes the name "list1". > The list still exists as the default parameter.
More generally, ‘del’ deletes a *reference*. Names are one kind of reference; others include items in a collection such as a dict or set. Deleting a reference *never* affects the value referred to. However, once a value has no more references, the program can no longer access it, so the Python machine is at liberty to delete the value behind the scenes at some future point. > A default parameter is evaluated when the function is defined, and > that value exists as the default as long as the function exists. So, because the function retains a reference to the value, the value remains unaffected when you delete the reference ‘list1’. -- \ “True greatness is measured by how much freedom you give to | `\ others, not by how much you can coerce others to do what you | _o__) want.” —Larry Wall | Ben Finney -- https://mail.python.org/mailman/listinfo/python-list