The del statement

Duncan Booth duncan.booth at invalid.invalid
Thu May 8 03:56:12 EDT 2008


Arnaud Delobelle <arnodel at googlemail.com> 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

> What conclusion should we draw from that?

That Python is simple and consistent.



More information about the Python-list mailing list