我在python的词典中使用datetime
时试图理解一种奇怪的行为。下面的代码是为了解释而写的。我预计变量a
和b
的示例与self.x
和self.y
的行为相同。
更清楚:在开头self.x=1
,self.y=2
,稍后在self.x=self.y
,在while循环内 - self.x
正在增加1.正如预期的那样,只有self.x
达到5
的值,而self.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
运行结果:
if button==3 then
local hovering=hexGrid:containingHex(x,y) -- get hexagon at mouse position onclick
if hovering then
local data=hexes.getHexagon(hovering)
data["text"]=data["text"]=="1" and "2" or "1"
end
end