"Steven D'Aprano" <st...@remove..urce.com.au> wrote: On Fri, 03 Apr 2009 10:50:08 -0700, ben.taylor wrote:
>> 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. > >The value of hash(None) appears to be the value of id(None), which means >it is the memory address that None happens to get, which means it will >depend on the precise order that Python allocates things when it starts >up, which will vary from platform to platform and version to version. > >> 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? > >Any object can be hashed if it has a working __hash__ method. There's no >reason not to have None hashable -- it costs nothing and allows you to >use None as a dict key. So what happens if I try to pickle the dict and keep it for next time? Will I be able to access whatever I have associated with None? (directly - mydict[None], not in a for loop.) And if I send the pickle to another machine and unpickle it, what then? - is unpickling smart enough to construct the dict with the local hash of None? - Seems to me that if it isn't, and you want to do this, there would have to be a fixed, well known value for the hash of None. - Hendrik -- http://mail.python.org/mailman/listinfo/python-list