首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python JupyterNotebook:清除变量?

Python JupyterNotebook:清除变量?
EN

Stack Overflow用户
提问于 2021-09-24 11:46:07
回答 1查看 58关注 0票数 0

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

我写了这段代码,并另存为test.py

代码语言:javascript
复制
GRAPH = dict()

def clear():
    GRAPH = dict()

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

class Foo:
    pass

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

代码语言:javascript
复制
import test

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

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

我已经用test.py写了一个clear()函数,希望在一开始清除GRAPH以便重复性,但是当我在notebook单元格中调用test.clear()时它不起作用

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-09-24 12:42:24

test.clear()无法按预期工作,因为当您在函数中定义一个变量时,它被创建为一个只存在于函数内部的局部变量。因此,test.clear()中的GRAPH是一个不同于您在test.py顶部定义的GRAPH的对象。

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

代码语言:javascript
复制
def clear():
    global GRAPH
    GRAPH = dict()

确保强制您的笔记本内核导入新版本的test.py。然后,通过在test.add_to_graph(f)之前包含对test.clear()的调用来运行单元,应该会产生所需的效果。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69314499

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档