根据IPython 演示模式示例,您可以将演示指令添加到独立模块中。
然后,当在笔记本中实际执行它时,每次您想要进入下一个重要部分时都会调用演示对象包装器。因此,您的单元格主要由对该演示包装对象的调用组成。
选项 2 显然是代码重用的最佳选择,它可以说是所有软件工程中的事实标准。
我认为笔记本概念本身并不能很好地扩展到 3、4、5……不同的数据文件。笔记本演示并不意味着是批处理容器。如果您发现自己需要对不同的数据集进行参数扫描,并希望在为每个参数组加载的不同数据之上重新运行分析(即使“参数”可能与不同的文件名一样简单),它会引发不好的代码气味。这可能意味着以“交互式”方式执行的分析水平是错误的。“以交互方式”见证分析并同时执行批处理是两个几乎不兼容的目标。一个更好的主意是单独批处理所有参数集,从任何演示的角度来看都是“离线”的,然后构建一组独立的函数,这些函数可以从计算和存储的批处理结果中产生可视化结果。那么 notebook 将只是一系列函数调用,每个函数调用都会同时生成所有参数集的摘要数据(其中一些可能是批处理期间选择的参数集的示例),以进行必要的比较并有意义并排显示结果数据。
“见证”一个完整的交互式演示文稿,该演示文稿对一个参数集进行分析,然后更改一些全局变量/切换到新笔记本/在同一笔记本中运行更多单元格,以便在不同参数集上“见证”相同的演示文稿听起来很边缘对我来说没用,从某种意义上说,我无法想象这样一种情况,即使用演示文稿的模式并不比使用有针对性的摘要演示文稿更糟糕,该演示文稿首先计算所有感兴趣的参数集的结果,并将重要的结果汇总到一个比较中。
也许我能想到的唯一案例是玩具教学演示,比如一些玩具频率数据和一系列做一些简单傅立叶分析之类的笔记本。但这正是需要将分析函数制作成辅助模块的情况,笔记本本身只是让您有选择地声明要在哪个玩具输入文件上运行笔记本。