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

Reply via email to