Eval of expr with 'or' and 'and' within

Chris Angelico rosuav at gmail.com
Fri Jun 14 22:21:49 EDT 2013


On Sat, Jun 15, 2013 at 12:03 PM, Cameron Simpson <cs at zip.com.au> wrote:
> On 15Jun2013 01:34, Steven D'Aprano <steve+comp.lang.python at pearwood.info> wrote:
> | Everyone is aware that there is more than one NAN, right?
>
> I was not. Interesting.
>
> | If my
> | calculations are correct, there are 9007199254740992 distinct float NANs
> | in Python (although there is no direct way of distinguishing them).
>
> Wouldn't id() do it? At least in terms of telling them apart?
> I gather they're not inspectable in Python?

You could recognize one float object as distinct from another, but
that's true of all floats:

>>> float("1.0") is float("1.0")
False

All NaNs are different in terms of the == operator, so conceptually
there are an infinite number of unique NaNs. The fact that they're
stored in memory using a certain number of bits means that there must
be a finite number of possible representations, but that's really an
implementation detail. I suppose you could figure out the
representation differences by fiddling with ctypes (in C I'd just use
a union), but that's really all.

ChrisA



More information about the Python-list mailing list