I can't really think of any reason why python needs the
del keyword (and most languages seem to not have a similar keyword). For instance, rather than deleting a variable, one could just assign
None to it. And when deleting from a dictionary, a
del method could be added.
Is there any reason to keep
del in python, or is it a vestige of Python's pre-garbage collection days?
Firstly, you can del other things besides local variables
del list_item del dictionary["alpha"]
Both of which should be clearly useful. Secondly, using
del on a local variable makes the intent clearer. Compare:
foo = None
I know in the case of
del foo that the intent is to remove the variable from scope. It's not clear that
foo = None is doing that. If somebody just assigned
foo = None I might think it was dead code. But I instantly know what somebody who codes
del foo was trying to do.
There's this part of what
del does (from the Python Language Reference):
Deletion of a name removes the binding of that name from the local or global namespace
None to a name does not remove the binding of the name from the namespace.
(I suppose there could be some debate about whether removing a name binding is actually useful, but that's another question.)