gpt4 book ai didi

python - += 与 =+ 在 timedelta 中

转载 作者:行者123 更新时间:2023-11-28 19:54:43 25 4
gpt4 key购买 nike

问题:这是怎么回事?

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 <module>
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 <module>
TypeError: 'bool' object is not callable
>>> dates = date(2015,12,12)
Traceback (most recent call last):
File "(stdin)", line 1, in <module>
TypeError: 'bool' object is not callable
>>> x = date(2015,12,12)
Traceback (most recent call last):
File "(stdin)", line 1, in <module>
TypeError: 'bool' object is not callable

显然我分配变量的能力也受到了某种损害?

最初我在前半部分遇到了错误,随着我深入挖掘,我意识到了帖子后半部分的内容。

如有任何帮助,我们将不胜感激。

最佳答案

=+ 不是增强赋值语法。您有 = 和一个单独的 unary + operator :

date = (+ONE_DAY)

您将 date 恢复到 ONE_DAY(+ 对该值没有任何作用)。

请注意,您首先将名称 date 绑定(bind)到 datetime.date() 实例,然后再绑定(bind)到 datetime.timedelta() 实例使用上面的 =+ 语句。然后您不能仍然期望它绑定(bind)到 import 行中的 datetime.date 对象。 Python 不会将导入的名称与代码中的其他名称分开,导入绑定(bind)名称的方式与赋值的方式相同。

换句话说,分配根本没有受到影响。恰恰相反,因为赋值有效,您不能再将 date 名称视为绑定(bind)到 datetime.date

这很好用:

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

因为那时您绑定(bind)了名称 datetime,并且仍然可以从那里到达可调用的 datetime.date

关于python - += 与 =+ 在 timedelta 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34521215/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com