[Python-ideas] Please reconsider the Boolean evaluation of midnight
Shai Berger
shai at platonix.com
Wed Mar 5 11:16:12 CET 2014
Hi all,
This is my first post here, following a recommendation from Alexander
Belopolsky to use this list, to try to convince the Python developers to
reopen a ticket. I am a long-time Python user, and a Django committer.
http://bugs.python.org/issue13936 is a complaint about the fact that midnight
-- datetime.time(0,0,0) -- is evaluated as False in Boolean contexts. It was
closed as invalid, under the claim that """It is odd, but really no odder than
"zero values" of other types evaluating to false in Boolean contexts""".
I would like to ask for this to be reconsidered; since the ticket was closed,
two main arguments were given for this:
1) The practical argument (paraphrasing Danilo Bergen and Andreas Pelme): The
current semantics is surprising and useless; users do not expect valid times
to be falsey, and do not normally want code to have special behavior on
midnight. Users who ask for Boolean evaluation of a variable that's supposed
to hold a time value, usually write "if var" as shorthand for "if var is not
None".
2) The principled argument (which I think is at the root of the practical
argument); quoting myself from the ticket: """Midnight is not a "zero value",
it is just a value. It does not have any special qualities analogous to those
of 0, "", or the empty set. ... Midnight evaluting to false makes as much
sense as date(1,1,1) -- the minimal valid date value -- evaluating to
false""".
Thanks,
Shai.
More information about the Python-ideas
mailing list