如何找回Jupyter Notebook运行内核中已加载的丢失函数?
恢复Jupyter内核中加载的自定义函数代码
以下是几种可行的方法,直接在Jupyter单元格中运行即可:
1. 直接获取单个函数的源码
使用inspect模块可以直接提取函数的原始代码,这是最常用的方法:
import inspect # 将your_function_name替换为你要恢复的函数名 print(inspect.getsource(your_function_name))
运行后会直接输出该函数的完整源码,你可以复制到新单元格中保存。
2. 批量查找所有自定义函数
如果记不清所有函数名,可以遍历全局命名空间,筛选出你自己定义的函数并批量导出:
import inspect # 遍历全局变量,过滤出自定义函数(排除第三方库和内置函数) for name, obj in globals().items(): if inspect.isfunction(obj) and obj.__module__ == '__main__': print(f"=== 函数: {name} ===") print(inspect.getsource(obj)) print("\n" + "-"*60 + "\n")
这段代码会列出所有在当前内核中定义的自定义函数及其源码。
3. 处理动态创建的函数(inspect失效时)
如果你的函数是通过exec、eval等动态方式创建的,inspect.getsource可能无法获取源码,这时可以通过反编译字节码来还原逻辑:
import dis # 替换为目标函数名 dis.dis(your_function_name)
反编译后的字节码会展示函数的执行逻辑,你可以根据这些信息重新编写函数代码。
注意事项
- 所有操作必须在当前内核未重启前完成,一旦重启内核,加载的函数会全部消失。
- 如果函数依赖其他自定义变量或嵌套函数,
inspect.getsource会自动包含相关依赖代码,确保代码的完整性。
内容的提问来源于stack exchange,提问作者Anna
相关产品推荐
相关产品推荐

