如何在Python函数内使用%store魔术命令存储变量供其他Jupyter notebook使用
报错原因
%store是IPython内核提供的魔术命令,默认只能读取全局命名空间中的变量。你代码里的df3是fun3的局部作用域变量,魔术命令无法直接访问局部作用域内的变量,因此触发未知变量报错。
解决方案
两种可行方案,按需选择:
方案1:在函数内部调用IPython API实现存储(不需要暴露变量到全局)
直接调用魔术命令的底层API,主动传入局部变量参数即可,修改后的fun3代码如下:
def fun3(df1, df2, df3): df3.to_csv("df3.csv", index=False) # 替换原%store行,调用IPython底层API执行存储 get_ipython().run_line_magic('store', 'df3') return df1, df2, df3
注意:该写法仅在IPython/Jupyter环境生效,原生Python解释器不支持get_ipython()方法
方案2:函数外部执行存储(无环境兼容问题)
不需要修改函数代码,在全局作用域调用函数拿到返回的df3后,再执行%store命令即可:
# 先执行你的函数流程拿到df3 df1, df2 = fun1() df1, df2, df3 = fun2(df1, df2) df1, df2, df3 = fun3(df1, df2, df3) # 全局作用域下执行store,此时df3是全局变量可被识别 %store df3
跨Notebook读取说明
其他Jupyter notebook中要读取存储的df3时,执行以下命令即可加载:
%store -r df3
内容的提问来源于stack exchange,提问作者The Great
相关产品推荐
相关产品推荐

