我有两个牢房。在第一个中,我设置了一个变量并调用了一个函数,第二个中包含了使用此变量的函数定义。
当我刷新第一个单元格时,尽管变量的值改变了,但输出始终是相同的。只有当我重新运行带有函数定义的单元格时,输出才会更改
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。如何避免在此函数中缓存变量?
仅在函数定义时评估函数的默认参数。因此,当您运行第二个单元格时,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] 删除。
我来说两句