python - Python-日期时间的无法解释的行为
问题描述
我试图理解datetime
在 python 字典中使用时的奇怪行为。下面的代码是用来解释的。我预计变量a
and的示例将与andb
相同。self.x
self.y
更清楚地说:在开始self.x=1
时,self.y=2
,稍后self.x=self.y
,以及在一个 while 循环内 -self.x
递增 1。正如预期的那样,只有self.x
达到 的值5
,而 whileself.y
保持在2
,如下面的运行结果所示。
但我正在寻找解释为什么它没有发生a
,b
两者都增加,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
解决方案
推荐阅读
- ruby-on-rails - Rails 5.2.3 -- ActionView::Template::Error: 资产不存在于资产管道中
- python - “环境:生产”对 python-eve 意味着什么?
- laravel - 在每个访问中重置缓存 TTL
- android-viewpager - 如何禁用在android中扩展PagerAdapter的手指触摸viewpager滑动
- reactjs - 如何显示下拉菜单语义 UI
- javascript - 如何修复:导航栏样式问题
- ios - React Native - 在键盘出现时调整滚动视图(ios)
- python-3.x - 如何将文本文件中的标记读取到类变量?
- reactjs - React-Native:显示 JSON 数据
- c# - 如何显示foreach循环的索引和索引+1?