Duncan Booth wrote: > Arnaud Delobelle <[EMAIL PROTECTED]> wrote: > > > > > > > George Sakkis wrote: > >> One of the few Python constructs that feels less elegant than > >> necessary to me is the del statement. For one thing, it is overloaded > >> to mean three different things: > >> (1) del x: Remove x from the current namespace > >> (2) del x[i]: Equivalent to x.__delitem__(i) > >> (3) del x.a: Equivalent to x.__delattr__('a') (or delattr(x,'a')) > > > > Note that the 'X = Y' construct has the corresponding three meanings: > > > > (1) x = 4 # Bind x to 4 in the 'current namespace' > > (2) x[i] = 4 # equivalent to x.__setitem__(i, 4) > > (3) x.a = 4 # Equivalent to x.__setattr__('a', 4) > > I think you both missed a case: > > (1b) global x; del x # Remove x from global namespace > (1b) global x; x = 4 # Bind x to 4 in the global namespace
This is why you put 'current namespace' in quotes! But all three of us missed the case: (1-3000) What about nonlocal? > That Python is simple and consistent. Seems reasonable to me. -- Arnaud -- http://mail.python.org/mailman/listinfo/python-list