问题:这有什么用?
from datetime import timedelta, date ONE_DAY = timedelta(days=1) date = date(2015,12,12) >>> date -= ONE_DAY >>> date date(2015,12,11) >>> date += ONE_DAY >>> date date(2015,12,12) >>> date **=+** ONE_DAY >>> date datetime.timedelta(1)
通常情况下,我会在尝试使用时出现错误=+
,但我似乎正在分配timedelta对象.也:
>>> TWO_DAYS = timedelta(days=2) >>> TWO_DAYS datetime.timedelta(2)
...
>>> date = date(2015,12,12) Traceback (most recent call last): File "(stdin)", line 1, inTypeError: 'datetime.timedelta' object is not callable >>> date = False >>> date False >>> date = date(2015,12,12) Traceback (most recent call last): File "(stdin)", line 1, in TypeError: 'bool' object is not callable >>> dates = date(2015,12,12) Traceback (most recent call last): File "(stdin)", line 1, in TypeError: 'bool' object is not callable >>> x = date(2015,12,12) Traceback (most recent call last): File "(stdin)", line 1, in TypeError: 'bool' object is not callable
显然我分配变量的能力也有所妥协?
我最初在上半场从问题中得到了一个错误,当我深入挖掘时,我意识到了帖子后半部分的内容.
任何帮助,将不胜感激.
=+
不是增强的赋值语法.你有=
一个单独的 一元运算+
符:
date = (+ONE_DAY)
你反弹date
到ONE_DAY
(+
没有达到那个价值).
请注意,您date
首先将名称绑定到datetime.date()
实例,然后绑定到datetime.timedelta()
具有上述=+
语句的实例.然后你不能期望它被绑定到datetime.date
该import
行的对象.Python不会将导入的名称与代码中的其他名称分开,导入绑定名称的方式与分配方式相同.
换句话说,任务没有受到任何影响.恰恰相反,这是因为赋值工作使您无法再将date
名称视为绑定datetime.date
.
这很好用:
import datetime date = datetime.date(2015, 12, 12)
因为那样你绑定了名字datetime
,并且仍然可以datetime.date
从那里到达可调用者.