Arnaud Delobelle <arno...@gmail.com> writes: > I have learnt too that hash(-1) is not (-1), and that it seems that a > hash value is not allowed to be (-1). There is one thing left to find > out. Why can't it be (-1)?
Because -1 has a special meaning in the C function equivalent to Python's hash(). PyObject_Hash returning -1 means that an exception was raised somewhere inside the object's __hash__ method. For that reason hash functions that really return -1 must change that to another value, and -2 is as good a replacement as any. This is documented in http://docs.python.org/c-api/object.html?highlight=pyobject_hash#PyObject_Hash -- http://mail.python.org/mailman/listinfo/python-list