当前位置:  开发笔记 > 编程语言 > 正文

+ = vs. = + timedelta

如何解决《+=vs.=+timedelta》经验,为你挑选了1个好方法。

问题:这有什么用?

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, in 
TypeError: '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

显然我分配变量的能力也有所妥协?

我最初在上半场从问题中得到了一个错误,当我深入挖掘时,我意识到了帖子后半部分的内容.

任何帮助,将不胜感激.



1> Martijn Piet..:

=+不是增强的赋值语法.你有=一个单独的 一元运算+符:

date = (+ONE_DAY)

你反弹dateONE_DAY(+没有达到那个价值).

请注意,您date首先将名称绑定到datetime.date()实例,然后绑定到datetime.timedelta()具有上述=+语句的实例.然后你不能期望它被绑定到datetime.dateimport行的对象.Python不会将导入的名称与代码中的其他名称分开,导入绑定名称的方式与分配方式相同.

换句话说,任务没有受到任何影响.恰恰相反,这是因为赋值工作使您无法再将date名称视为绑定datetime.date.

这很好用:

import datetime
date = datetime.date(2015, 12, 12)

因为那样你绑定了名字datetime,并且仍然可以datetime.date从那里到达可调用者.

推荐阅读
乐韵答题
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有