gpt4 book ai didi

python - 为什么保存未使用的变量会有所不同?

转载 作者:太空宇宙 更新时间:2023-11-04 02:32:36 24 4
gpt4 key购买 nike

<分区>

我在使用 matplotlib 时发现了这个奇怪而有趣的行为。为了演示目的,我写了一个简单的动画:

import numpy as np
import matplotlib.pyplot as plt
import matplotlib.animation as animation


fig, ax = plt.subplots()
line, = ax.plot(range(10))


def func(i=0):
line.set_ydata(np.random.rand(10) * 10)
return line


ani = animation.FuncAnimation(
fig=fig,
func=func,
frames=np.linspace(0, 4 * np.pi, 300),
)
plt.show()

它按预期工作,没有发生任何奇怪的事情。

但如果我将行更改为:

animation.FuncAnimation(
fig=fig,
func=func,
frames=np.linspace(0, 4 * np.pi, 300),
)

它停止工作,永远不会调用 func。

那么,为什么保存 ani 对象会产生差异,即使它从未被引用过? matplotlib 怎么知道我是否这样做了?

================

刚写完这个,垃圾收集器就在我脑海中浮现。但是我不知道gc是怎么工作的,而且几次测试都没有说服我。

另外,我想知道:

类似的行为在其他图书馆中是否常见?我认为我们调用一个函数是为了“对某事”或“获取返回值或对象”,所以 FuncAnimation 对我来说似乎很奇怪。我感觉对吗?

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