You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Jupyter中函数默认参数缓存变量问题:如何规避?

解决Jupyter中函数默认参数缓存变量值的问题

这是个非常典型的Python默认参数陷阱,我当初刚学Python的时候也踩过一模一样的坑!

问题根源

Python的函数默认参数是在函数定义的时刻就完成求值并绑定的,而不是每次调用函数时重新计算。你在第二个单元格定义count_frame_indeces2的时候,window的值是241,这个值就被永久绑定到了函数的默认参数window_f上。哪怕之后你修改了window的值,只要不重新定义函数,它的默认参数还是会沿用最初绑定的241,所以你重新运行第一个单元格调用函数时,输出不会变化。

解决方案

想要避免这种缓存情况,我们可以把默认参数设为None,然后在函数内部动态引用当前的window变量,这样每次调用函数时都会取最新的window值:

def count_frame_indeces2(window_f=None):
    # 如果没有传入参数,就使用当前全局的window变量值
    if window_f is None:
        window_f = window
    return window_f

这样修改后,当你把window改成22并重新运行第一个单元格时,调用count_frame_indeces2()就会返回最新的22了。

另外还有一种更直接的方式:每次修改window后都重新运行函数定义的单元格,但显然这不是最方便的做法,上面的方法才是更优雅的解决方案。

内容的提问来源于stack exchange,提问作者JSowa

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.07 20:42:55