Ok所以看起来文档中可能存在错误或缺少某些内容。例如,如果您在日期parm中添加前导0,则会得到与没有它的情况不同的结果,请参阅示例:
>>> import datetime
>>> datetime.date.today() - datetime.timedelta(063)
datetime.date(2014, 1, 4)
>>> datetime.date.today() - datetime.timedelta(63)
datetime.date(2013, 12, 23)
>>> datetime.date.today() - datetime.timedelta(days=63)
datetime.date(2013, 12, 23)
>>> datetime.date.today() - datetime.timedelta(days=063)
datetime.date(2014, 1, 4)
>>> datetime.date.today() - datetime.timedelta(days=063)
datetime.date(2014, 1, 4)
>>> datetime.date.today() - datetime.timedelta(days=int(063))
datetime.date(2014, 1, 4)
答案 0 :(得分:1)
前导0
表示该数字被解释为八进制数(基数为8)。所以063实际上是十进制的51。
答案 1 :(得分:1)
063
是八进制数:
>>> 063
51
因为(6 * 8)+ 3是51。
来自integer literals documentation:
octinteger ::= "0" ("o" | "O") octdigit+ | "0" octdigit+
在Python 3中,语法的"0" octdigt+
部分被删除,因为有太多人不停地绊倒它; {3}中的063
语法错误。
答案 2 :(得分:1)
我不认为这与timedelta有关,我首先尝试查看本手册: http://docs.python.org/2/library/datetime.html#timedelta-objects
然后我尝试了一些明显的事情:
>>> int = 063
>>> int
51
看起来数字类型中的前导被理解为python的八进制值。此外,如果它以0x开头,则认为它是有意义的十六进制。领先的0真的让我失望,但也在这个帖子中回答: