Boris Borcic <[EMAIL PROTECTED]> wrote:
> Hello,
> 
> Armin Rigo wrote:
> > Hi,
> > 
> > On Wed, Jun 07, 2006 at 02:07:48AM +0200, Thomas Wouters wrote:
> >> I just submitted http://python.org/sf/1501934 and assigned it to Neal so it
> >> doesn't get forgotten before 2.5 goes out ;) It seems Python 2.5 compiles
> >> the following code incorrectly:
> > 
> > No, no, it's an underground move by Jeremy to allow assignment to
> > variables of enclosing scopes:
> ...
> > Credits to Samuele's evil side for the ideas.  His non-evil side doesn't
> > agree, and neither does mine, of course :-)
> ...
> > More seriously, a function with a variable that is only written to as
> > the target of augmented assignments cannot possibly be something else
> > than a newcomer's mistake: the augmented assignments will always raise
> > UnboundLocalError.
> 
> I am not really a newcomer to python. But lately I find myself regularly 
> bitten
> by this compiler behavior that I tend to view as a (design) bug. This started
> happening after I saw that sets are just as good as lists performance-wise 
> and I
> began changing code like this

I see your attempted use of a closure as a design bug in your code. 
Remember that while closures can be quite convenient, there are other
methods to do precisely the same thing without needing to use nested
scopes.  I find that it would be far easier (for the developers of
Python) and significantly more readable if it were implemented as a
class.

class solve:
    def __init__(self, problem):
        self.freebits = ...
    ...
    def search(self, data):
        ...
        self.freebits ^= swaps
        ...
    ...

Not everything needs to (or should) be a closure

 - Josiah

_______________________________________________
Python-Dev mailing list
Python-Dev@python.org
http://mail.python.org/mailman/listinfo/python-dev
Unsubscribe: 
http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com

Reply via email to