<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On 17 February 2014 12:30, M.-A. Lemburg <span dir="ltr"><<a href="mailto:mal@egenix.com" target="_blank">mal@egenix.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div class="">On 17.02.2014 13:19, Serhiy Storchaka wrote:<br>
> 17.02.14 13:56, M.-A. Lemburg написав(ла):<br>
>> Yes, but that's not the point. Unlike strings or other mixed types that<br>
>> you cannot compare, None is used as placeholder in data processing as<br>
>> special value to mean "no value available".<br>
><br>
> Isn't float('nan') such placeholder?<br>
<br>
</div>You can easily construct other such placeholders, but None was intended<br>
for this purpose:<br>
<br>
<a href="http://docs.python.org/2.7/c-api/none.html?highlight=none#Py_None" target="_blank">http://docs.python.org/2.7/c-api/none.html?highlight=none#Py_None</a><br>
<br>
"""<br>
The Python None object, denoting lack of value. ...<br>
<div class="">"""<br>
<br>
>> You intentionally use such values in programming. It's not a bug to<br>
>> have None in a data list or as value of a variable.<br>
><br>
> You can't have None in array('f'), you can't add or multiply by None. Relation operators don't looks<br>
> an exception here. Applying sorted() to a list which contains numbers and Nones makes as much sense<br>
> as applying sum() to it.<br>
<br>
</div>Of course, you cannot apply any operations with None - it doesn't<br>
have a value -, but you can compare it to other objects and it provides<br>
a consistent behavior in Python 2. Python 3 is missing such an object.<br></blockquote><div><br></div><div>I agree with you that Python 3 could use such an object.  Just don't make it the default.  Leave None as it is.</div>
<div><br></div><div>Also I agree that my previous naming suggestions are bad.  What we need is only one (or two) additional object whose main semantic meaning is still "no value", but which also adds a meaning of "comparable".  Then it's a matter of choosing a good name for it, with lots of bikeshedding involved.  Just lets not change None only because we're too lazy to discuss a proper alternative name.  Also this use case is not _that_ common, so it's ok if it has a slightly longer name than None.</div>
<div><br></div><div>Also think of the implications of changing None at this point.  It would allow us to write programs that work Python >= 3.5 and Python <= 2.7, but fail mysteriously in all other versions in between.  What a mess that would be...</div>
<div><br></div></div>-- <br><div dir="ltr">Gustavo J. A. M. Carneiro<div>Gambit Research LLC<br>"The universe is always one step beyond logic." -- Frank Herbert</div></div>
</div></div>