Why is this python operation returning a tuple?
from datetime import date
from datetime import timedelta
a = date.today() - timedelta(1)
# a above is a tuple and not datetime
# Since I am a C programmer, I would expect python to cast back to datetime
# but it is casting it to a tuple
Can you please tell me why th开发者_JS百科is is happening? and also how I can see that the operation above results in a datetime?
I am a python newbie, sorry if this is a trivial thing, but I am stuck here for a while!
Thanks
Perhaps the repr of a confuses you:
>>> a
datetime.date(2010, 10, 8)
this is not a tuple, it's what datetime uses as repr(). Print it to get its string() representation:
>>> print a
2010-10-08
Either str() a yourself explicitly or use a.strftime() to do you own formatting.
Having looked at your image:

I think you are assuming it's a string, because print outputs a string - but that's exactly what its job is! The object is a datetime. You cannot convert it to a date by passing it to the date() constructor, either - instead you should call a.date()
use type built-in function:
>>> from datetime import date
>>> from datetime import timedelta
>>>
>>> a = date.today() - timedelta(1)
>>> a
datetime.date(2010, 10, 8)
>>> type(a)
<type 'datetime.date'>
>>>
Your statement
date.today() - timedelta(1)
returns a date object.
This object have two string representations:
The most common readable format is by calling
str()function (the same called using print), in this casestr(a)gives you'2010-10-08'A second representation, the object nature, is by using
repr()function. In this caserepr(a)returns'datetime.date(2010, 10, 8)'.
加载中,请稍侯......
精彩评论