Python += 运算符可以修改原始引用?!

11次阅读

共计 247 个字符,预计需要花费 1 分钟才能阅读完成。

今天玩 sagemath+ipywidget 的动画渲染,发现下面这段代码对新手太友好了:

origin = (0,0)

frames = []

g = Graphics()
frames += [g]

for i in range(5):
  g += circle(origin, i*5)
  frames += [g]

animate(frames).show()

一开始我以为这段代码是错的,frames 里存了一堆同样的 g,只会将最后一张照片画六遍,不会显示动画效果。

实际情况是每次 g+= 都会修改 g 本身的引用。最后还真的生成了 6 帧内容不同的动画。

正文完
 0