Antoon Pardon wrote:

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.

http://redwing.hutman.net/~mreed/warriorshtm/tirelessrebutter.htm

regards
 Steve
--
Steve Holden               http://www.holdenweb.com/
Python Web Programming  http://pydish.holdenweb.com/
Holden Web LLC      +1 703 861 4237  +1 800 494 3119
--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to