lambda

Antoon Pardon apardon at forel.vub.ac.be
Mon Jan 17 08:15:34 EST 2005


Op 2005-01-17, Steve Holden schreef <steve at holdenweb.com>:
> Antoon Pardon wrote:
>
>> Op 2005-01-17, Steve Holden schreef <steve at holdenweb.com>:
>> 
>>>Antoon Pardon wrote:
>>>[...]
>>>
>>>>>"A foolish consistency is the hobgoblin of little minds". Rules are made 
>>>>>to be broken.
>>>>
>>>>
>>>>Like only use immutables as dictionary keys.
>>>>
>>>
>>>Fair enough, but don;t go advising newbies to do this.
>> 
>> 
>> How about something like this.
>> 
>> Because of the extra precautions one has to take when
>> using mutables as hash keys, we advise newbies
>> to stick with immutable keys until they have gathered
>> enough knowledge and experience to adequatly weight
>> the pro and cons of a mutable key solution against
>> an immutable key solution.
>> 
> There you go with the minutiae again. How about:
>
> "Don't use mutables as hash keys"?

That sounds too dogmatic to my ears. I also find it
too selective. The problem with mutables as dictionary
keys is not specific to dictionaries. Everywhere you
have mutables in a container, it is possible that
mutating the object in the container will cause
problem. Heck even using mutables as arguments can
cause trouble. Why else the specific advice against

  def foo(p = [])

type of arguments. So should we adopt the principles:

  Don't use mutables in containers

  Don't use mutables as default values for parameters

  Don't use mutables as arguments.

  Don't assign one mutable to an other.


I don't see a big difference between these principles
and the hash key principle, so in the end may be we
should just stick with the more general principle:

  Don't use mutables!


and be done with it.

-- 
Antoon Pardon



More information about the Python-list mailing list