Found this while trying to do something unrelated and was curious... If you hash an integer (eg. hash(3)) you get the same integer out. If you hash a string you also get an integer. If you hash None you get an integer again, but the integer you get varies depending on which machine you're running python on (which isn't true for numbers and strings).
This raises the following questions: 1. Is it correct that if you hash two things that are not equal they might give you the same hash value? Like, for instance, None and the number 261862182320 (which is what my machine gives me if I hash None). Note this is just an example, I'm aware hashing integers is probably daft. I'm guessing that's fine, since you can't hash something to a number without colliding with that number (or at least without hashing the number to something else, like hashing every number to itself * 2, which would then mean you couldn't hash very large numbers) 2. Should the hash of None vary per-machine? I can't think why you'd write code that would rely on the value of the hash of None, but you might I guess. 3. Given that presumably not all things can be hashed (since the documentation description of hash() says it gives you the hash of the object "if it can be hashed"), should None be hashable? Bit esoteric perhaps, but like I said, I'm curious. ;-) Ben -- http://mail.python.org/mailman/listinfo/python-list