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()
的单元格应该会产生预期的效果。
我不确定如何描述这个,所以这是场景:
我写了这段代码并保存为 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()
的单元格应该会产生预期的效果。