[Python-ideas] Please reconsider the Boolean evaluation of midnight

M.-A. Lemburg mal at egenix.com
Thu Mar 6 00:22:38 CET 2014


On 06.03.2014 00:10, Donald Stufft wrote:
> 
> On Mar 5, 2014, at 6:08 PM, M.-A. Lemburg <mal at egenix.com> wrote:
> 
>> On 05.03.2014 23:38, Donald Stufft wrote:
>>>
>>> On Mar 5, 2014, at 5:35 PM, M.-A. Lemburg <mal at egenix.com> wrote:
>>>
>>>> On 05.03.2014 23:16, Ben Finney wrote:
>>>>> "M.-A. Lemburg" <mal at egenix.com> writes:
>>>>>
>>>>>> I don't know what all the fuzz is about. There are lots of types
>>>>>> in Python that evaluate to False in certain corner cases, e.g.
>>>>>> "", (), [], {}, 0, 0.0, 0j, None, etc.
>>>>>>
>>>>>> datetime.time(0,0,0) is just another one :-)
>>>>>
>>>>> The salient difference is:
>>>>>
>>>>> With the former set, they all embody concepts of either “empty” or “zero
>>>>> magnitude”. They strongly connote “not there” within their domain of
>>>>> values, hence map well to Boolean false.
>>>>>
>>>>> With ‘datetime.time’ there is no equivalent: midnight is not special in
>>>>> the way “empty” or “zero magnitude” are. Midnight is an arbitrary point
>>>>> on a continuum, and is not a “not there” value.
>>>>
>>>> This is true in a date/time continuum, but not true if you regard
>>>> time as "time of day". In the latter interpretation, the day starts
>>>> at midnight, so the day is "not there" yet at midnight.
>>>
>>> The day is absolutely here at midnight. Midnight isn’t some void where
>>> time ceases to exist.
>>
>> No, but midnight starts the day, just like 0 starts the positive
>> real numbers (itself not being positive) :-)
> 
> And yet 0 is False not because it starts the positive real numbers (not sure
> what that has to do with a value in an integer type) but because it signifies
> an empty or zero magnitude object.

Well, the duration between the start of day and midnight is zero
and returning to the interpretation of time of day being a measurement
relative to midnight, this makes time(0,0,0) a zero magnitude
object. q.e.d.

Anyway, it's all up in the air for interpretation :-)

There are reasons to have time(0,0,0) be False just as there
are reasons for it not to be False. There's no clear answer.

>>>>> It should not be Boolean false any more than any other time.
>>>>
>>>> Just like with most interpretations, you can just as easily find
>>>> one which implies the exact opposite.
>>>>
>>>> It's all smoke and mirrors anyway :-)
>>>>
>>>> Perhaps Tim just wanted to be able to make float(time(0,0,0)) return
>>>> 0.0 seconds some day. That's what mxDateTime does for time values.
>>>>
>>>> -- 
>>>> Marc-Andre Lemburg
>>>> eGenix.com
>>>>
>>>> Professional Python Services directly from the Source  (#1, Mar 05 2014)
>>>>>>> Python Projects, Consulting and Support ...   http://www.egenix.com/
>>>>>>> mxODBC.Zope/Plone.Database.Adapter ...       http://zope.egenix.com/
>>>>>>> mxODBC, mxDateTime, mxTextTools ...        http://python.egenix.com/
>>>> ________________________________________________________________________
>>>> 2014-04-09: PyCon 2014, Montreal, Canada ...               35 days to go
>>>>
>>>> ::::: Try our mxODBC.Connect Python Database Interface for free ! ::::::
>>>>
>>>>  eGenix.com Software, Skills and Services GmbH  Pastor-Loeh-Str.48
>>>>   D-40764 Langenfeld, Germany. CEO Dipl.-Math. Marc-Andre Lemburg
>>>>          Registered at Amtsgericht Duesseldorf: HRB 46611
>>>>              http://www.egenix.com/company/contact/
>>>> _______________________________________________
>>>> Python-ideas mailing list
>>>> Python-ideas at python.org
>>>> https://mail.python.org/mailman/listinfo/python-ideas
>>>> Code of Conduct: http://python.org/psf/codeofconduct/
>>>
>>>
>>> -----------------
>>> Donald Stufft
>>> PGP: 0x6E3CBCE93372DCFA // 7C6B 7C5D 5E2B 6356 A926 F04F 6E3C BCE9 3372 DCFA
>>>
>>
>> -- 
>> Marc-Andre Lemburg
>> eGenix.com
>>
>> Professional Python Services directly from the Source  (#1, Mar 05 2014)
>>>>> Python Projects, Consulting and Support ...   http://www.egenix.com/
>>>>> mxODBC.Zope/Plone.Database.Adapter ...       http://zope.egenix.com/
>>>>> mxODBC, mxDateTime, mxTextTools ...        http://python.egenix.com/
>> ________________________________________________________________________
>> 2014-04-09: PyCon 2014, Montreal, Canada ...               35 days to go
>>
>> ::::: Try our mxODBC.Connect Python Database Interface for free ! ::::::
>>
>>   eGenix.com Software, Skills and Services GmbH  Pastor-Loeh-Str.48
>>    D-40764 Langenfeld, Germany. CEO Dipl.-Math. Marc-Andre Lemburg
>>           Registered at Amtsgericht Duesseldorf: HRB 46611
>>               http://www.egenix.com/company/contact/
> 
> 
> -----------------
> Donald Stufft
> PGP: 0x6E3CBCE93372DCFA // 7C6B 7C5D 5E2B 6356 A926 F04F 6E3C BCE9 3372 DCFA
> 

-- 
Marc-Andre Lemburg
eGenix.com

Professional Python Services directly from the Source  (#1, Mar 06 2014)
>>> Python Projects, Consulting and Support ...   http://www.egenix.com/
>>> mxODBC.Zope/Plone.Database.Adapter ...       http://zope.egenix.com/
>>> mxODBC, mxDateTime, mxTextTools ...        http://python.egenix.com/
________________________________________________________________________
2014-04-09: PyCon 2014, Montreal, Canada ...               34 days to go

::::: Try our mxODBC.Connect Python Database Interface for free ! ::::::

   eGenix.com Software, Skills and Services GmbH  Pastor-Loeh-Str.48
    D-40764 Langenfeld, Germany. CEO Dipl.-Math. Marc-Andre Lemburg
           Registered at Amtsgericht Duesseldorf: HRB 46611
               http://www.egenix.com/company/contact/


More information about the Python-ideas mailing list