我在jupyter的一个单元格中有一个变量,但是当我在下一个单元格中调用它时,它说找不到该变量
在从子文件中读取数据之前,我尝试过创建变量的实例。我尝试创建与第一个相同的另一个变量,并在下一个单元格中使用该变量。
if os.path.isfile("cointegration.json"):
with open("cointegration.json", "r") as f:
cointegration_mv = json.load(f)
else:
cointegration_mv = {}
for i in range(0, len(usd_pairs)):
pair_i = usd_pairs[i]
print(pair_i)
for j in range(0, i):
pair_j = usd_pairs[j]
print("\t+",pair_j)
if pair_i != pair_j:
code = pair_i + '_' + pair_j
print("\t\t=",code)
cointegration_mv[code] = get_cointegration(pair_i, pair_j)
json = json.dumps(cointegration_mv)
f = open("cointegration.json","w")
f.write(json)
f.close()
print(cointegration_mv.keys())
#This does print the keys
#The next cell
print(cointegration_mv.keys())
错误是:
NameError Traceback (most recent call last)
<ipython-input-15-7abb854e8cc9> in <module>
----> 1 print(cointegration_mv.keys())
NameError: name 'cointegration_mv' is not defined
即使当我在读取数据之前创建变量的实例时也会发生这种情况(因此,我希望键只是空的),并且当我尝试复制变量并传递副本时。
答案 0 :(得分:1)
我知道这个问题已经有 2 年了,但是对于遇到此问题的 Jupyter Notebook 的新手来说,您很可能必须运行前一个单元格才能让 Jupyter 初始化/声明/存储这些先前的变量。每当您运行一个单元格时,它都不会自动运行其他单元格并获取那些先前的变量。正如下面的指南解释得最好:
<块引用>请注意,在 Jupyter Notebook 中,重要的是单元格的执行顺序,而不是它们出现的顺序。 Python 会记住之前运行的所有代码,包括您定义的任何变量,而不管笔记本中的顺序如何。因此,如果您在 notebook 下方定义变量,然后(重新)向上运行单元格,那些定义在更下方的单元格仍将存在
答案 1 :(得分:0)
可能是在第一个单元格中声明的变量在本地范围内,这就是为什么在第二个单元格中调用时未定义为error的原因。 尝试将代码放入第一个单元格的函数中,然后在第二个单元格中调用该函数