我不确定如何描述这一点,所以这是一个场景:
我写了这段代码,并另存为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以便重复性,但是当我在notebook单元格中调用test.clear()时它不起作用
发布于 2021-09-24 12:42:24
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()的调用来运行单元,应该会产生所需的效果。
https://stackoverflow.com/questions/69314499
复制相似问题