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

Python函数参数img触发UnboundLocalError问题求助

问题原因分析

一、UnboundLocalError错误的根源

你遇到的错误和img是函数入参无关,问题出在Python的变量作用域规则上:

  • 只要函数内部存在对img的赋值操作(哪怕是在某个条件分支里),Python就会将img标记为局部变量,不再把它当成传入的参数处理。
  • 比如函数里写了类似这样的代码:
    def get_all_fd(image_id, img, label):
        if some_condition:
            img = img.transpose(...)  # 这里对img赋值
        print(img.shape)  # 如果条件不满足,img局部变量未赋值,触发错误
    
    当some_condition不成立时,img的局部变量从未被赋值,但后续代码又引用了它,就会抛出UnboundLocalError。

二、修改utils.py后重运行单元格无效的原因

Jupyter Notebook的内核有模块缓存机制:

  • 第一次导入utils模块时,Python会把模块代码加载到内存中缓存起来。
  • 之后再执行导入语句,Python直接用内存里的缓存版本,不会重新读取磁盘上修改后的文件,所以你的修改不会生效。
  • 除了重启内核,也可以用以下代码强制重新加载模块:
    import importlib
    importlib.reload(utils)
    
    重新加载后再导入函数,修改就能生效了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 00:12:51