首页 > 解决方案 > Python-日期时间的无法解释的行为

问题描述

我试图理解datetime在 python 字典中使用时的奇怪行为。下面的代码是用来解释的。我预计变量aand的示例将与andb相同。self.xself.y

更清楚地说:在开始self.x=1时,self.y=2,稍后self.x=self.y,以及在一个 while 循环内 -self.x递增 1。正如预期的那样,只有self.x达到 的值5,而 whileself.y保持在2,如下面的运行结果所示。

但我正在寻找解释为什么它没有发生ab两者都增加,datetime.timedelta(days=3)而只有b被编码为增加。

任何解释为什么?

class TBD:
    def __init__(self):
        self.x = 1
        self.y = 2
        print(self.x, self.y)
        self.run_it()

    def run_it(self):
        self.x = self.y
        z = 0
        a = {'start': datetime.datetime.now(), 'end': datetime.datetime.now() + datetime.timedelta(days=1)}
        b = a

        while z < 3:
            self.x += 1

            z += 1
            b['end'] = b['end'] + datetime.timedelta(days=3)
            print(b['end'], a['end'])
            print('x=', self.x, 'y=', self.y)

运行结果:

1 2
2018-05-15 16:26:58.101727 2018-05-15 16:26:58.101727
x= 3 y= 2
2018-05-18 16:26:58.101727 2018-05-18 16:26:58.101727
x= 4 y= 2
2018-05-21 16:26:58.101727 2018-05-21 16:26:58.101727
x= 5 y= 2

Process finished with exit code 0

标签: pythondatetime

解决方案


推荐阅读