使用Jupyter缓存函数中的变量

索瓦

我有两个牢房。在第一个中,我设置了一个变量并调用了一个函数,第二个中包含了使用此变量的函数定义。

当我刷新第一个单元格时,尽管变量的值改变了,但输出始终是相同的。只有当我重新运行带有函数定义的单元格时,输出才会更改

In[]:  window=241
       window_t=count_frame_indeces2()
       window_t

Out[]: 241

In[]:  def count_frame_indeces2(window_f=window):
           return window_f

即使我更改window为22,重新运行此单元格后的输出仍然是241。如何避免在此函数中缓存变量?

蒂埃里·拉图耶(Thierry Lathuille)

仅在函数定义时评估函数的默认参数。因此,当您运行第二个单元格时,window_f将从当前值中获取其默认值window

当您第一次运行第二个单元格时,的值window显然是241,所以这就是默认值window_f

然后,您更改的值window并调用不带参数的函数,因此将使用默认值(241)。

当您第二次运行第二个单元格时,您再次定义了该函数,并且window其默认参数获得了新值

要么传递参数:

window_t=count_frame_indeces2(window)

或者,window如果没有通过以下参数传递参数使函数使用当前值

def count_frame_indeces2(window_f=None):
    if window_f is None:
        window_f = window

    return window_f

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章