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

Jupyter Notebook调用test.py的clear函数无法清空全局GRAPH变量怎么办

问题原因

这是Python变量作用域规则导致的问题:

  • 你在clear()函数内执行GRAPH = dict()时,Python会默认将GRAPH识别为函数内部的局部变量,该赋值操作只会创建一个仅在函数内生效的局部字典,并不会修改模块顶层定义的全局GRAPH变量。
  • 而add_to_graph函数之所以能正常修改全局GRAPH,是因为你没有对GRAPH本身做重新赋值,只是修改了它内部的键值对,Python会向上查找作用域找到顶层的全局GRAPH对象进行操作。
解决方法

修改test.py中的clear函数即可,有两种常用实现方案:

方法1:显式声明要修改的是全局变量

def clear():
    global GRAPH
    GRAPH = dict()

加global声明后,函数内的赋值操作会直接修改模块顶层的GRAPH变量,实现清空效果。

方法2:直接调用字典内置方法修改原有对象

字典是可变对象,不需要重新绑定变量名,直接清空原有字典的内容即可,该写法不需要加global声明:

def clear():
    GRAPH.clear()

修改完成后,每次在Notebook单元格运行业务代码前先调用test.clear(),就能保证每次运行时GRAPH都是空的,结果可复现。

内容的提问来源于stack exchange,提问作者Sam-gege

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 23:12:03