Op 2005-01-17, Steve Holden schreef <[EMAIL PROTECTED]>: > Antoon Pardon wrote: > >> Op 2005-01-17, Steve Holden schreef <[EMAIL PROTECTED]>: >> >>>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 -- http://mail.python.org/mailman/listinfo/python-list