Is 'everything' a refrence or isn't it?
Fredrik Lundh
fredrik at pythonware.com
Sun Jan 15 15:48:39 EST 2006
Donn Cave wrote:
> | > What's the value of None? Would you say "it has no value" or "it's value
> | > is None" or something else?
> |
> | it has no value (or if you prefer, the set of values is empty).
>
> Dang, I would have said it does have a value.
>
> For one thing, in
>
> if a:
> print 'more or less True'
> else:
> print 'evidently not'
>
> None doesn't follow the default, so it seems like "if" has discovered
> some sort of value in there.
the "if" statement happens to use object identity to determine truth values
for certain special objects, including None:
int
PyObject_IsTrue(PyObject *v)
{
int res;
if (v == Py_True)
return 1;
if (v == Py_False)
return 0;
if (v == Py_None)
return 0;
/... query object .../
}
in the more general case, it's up to the object's type implementation to deter-
mine its "truth value", in response to a __nonzero__ or __len__ query.
maybe we need a new word for "virtual values" that are not really part of an
object's internal state ?
</F>
More information about the Python-list
mailing list