On Tue, 9 Dec 2008 at 18:55, Duncan Booth wrote:
Albert Hopkins <[EMAIL PROTECTED]> wrote:
def otherfunction():
try:
# some stuff
except SomeException, e:
# more stuff
del e
return
I think this looks ugly, but also does it not hurt performance by
preempting the gc? My feeling is that this is a misuse of 'del'. Am I
wrong? Is there any advantage of doing the above?
It is probably a complete waste of time, but there are situations where
code similar to this can be useful:
def otherfunction():
try:
# some stuff
except SomeException, e:
# more stuff
del e
raise
return
The point of code like this is that when a function exits by throwing an
exception the traceback includes a reference to the stack frame and all the
local variables. In some situations that can result in large data
structures not being freed for a very long time (e.g. until another
exception is thrown that is handled at the same level). So, *in very
specialised situations* it may be important to delete particular names from
the local namespace.
If I'm reading http://www.python.org/dev/peps/pep-3110/ right, Python
3.0 eliminates even this use case :)
I have had occasions to use del, when I don't want the variable in the
namespace anymore for some reason (for example, when I'm later going to
be scanning the namespace for some reason).
--RDM
--
http://mail.python.org/mailman/listinfo/python-list