Python Jupyter Notebook:清除变量?

Python JupyterNotebook: Clear variable?

我不确定如何描述这个,所以这是场景:

我写了这段代码并保存为 test.py:

GRAPH = dict()

def clear():
    GRAPH = dict()

def add_to_graph(input):
    GRAPH[input] = None

class Foo:
    pass

现在,在 JupyterNotebook 单元格中,我 运行:

import test

f = test.Foo()
test.add_to_graph(f)
print(test.GRAPH)

但是,如果您多次 运行 此单元格,GRAPH 将包含 Foo 的多个实例:

我在 test.py 中编写了一个 clear() 函数,希望在开始时清除 GRAPH 以实现可重复性,但是当我在笔记本单元格 [=19] 中调用 test.clear() 时它不起作用=]

test.clear() 没有按预期工作,因为当您在函数内部定义变量时,它被创建为仅存在于函数内部的局部变量。因此 test.clear() 中的 GRAPH 与您在 test.py.

顶部定义的 GRAPH 是不同的对象

获得预期结果的一种方法是在 test.clear() 中显式引用全局 GRAPH 变量,定义函数如下:

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

确保强制笔记本内核导入新版本的 test.py。然后 运行 在 test.add_to_graph(f) 之前调用 test.clear() 的单元格应该会产生预期的效果。