Python 在Jupyter笔记本中,如何安排子程序以高效地编写项目?

Python 在Jupyter笔记本中,如何安排子程序以高效地编写项目?,python,ipython,ipython-notebook,jupyter,jupyter-notebook,Python,Ipython,Ipython Notebook,Jupyter,Jupyter Notebook,我想在Jupiter中使用Python编写一个程序。为了简化工作,最好在编写主脚本之前先编写一些子例程(函数)和一些用户定义的类。我如何在木星安排它们?只需为每一个子函数/类编写一行新行,然后按顺序编写,然后在下面编写主脚本以调用子例程?我只是想知道这是否是使用Jupyter的正确方法 我不熟悉Jupyter和Python,但以Matlab为例,我会创建一个包含所有要使用的子函数的文件夹。我还将在同一个文件夹中编写一个脚本来调用这些函数来完成任务。但是,如何使用Jupyter在Python中实现

我想在Jupiter中使用Python编写一个程序。为了简化工作,最好在编写主脚本之前先编写一些子例程(函数)和一些用户定义的类。我如何在木星安排它们?只需为每一个子函数/类编写一行新行,然后按顺序编写,然后在下面编写主脚本以调用子例程?我只是想知道这是否是使用Jupyter的正确方法


我不熟悉Jupyter和Python,但以Matlab为例,我会创建一个包含所有要使用的子函数的文件夹。我还将在同一个文件夹中编写一个脚本来调用这些函数来完成任务。但是,如何使用Jupyter在Python中实现这一点呢?

对于所有笔记本都要访问的重复代码,最好的方法是将其添加到profile目录中。笔记本将按顺序加载该目录中的所有脚本,因此如果希望按特定顺序加载文件,建议您将文件命名为
01-.py
。该目录中的所有文件都将通过
exec
加载,exec执行文件时就好像它在您的上下文中一样,它不是一个模块加载,因此全局变量将相互挤压,所有模型上下文随后都将在您的本地命名空间中(类似于
import*
效果)


要查找您的配置文件目录,文档建议您使用
ipython locate profile
。这将告诉您可以将脚本放置在何处。

我使用笔记本主要用于数据分析。我的工作流程如下:在开发过程中,我在笔记本单元中声明我的所有例程。当下一个数据集需要相同的函数时,我经常将它们复制粘贴到新笔记本上。通常,我必须稍微调整函数以适应新的数据集。当我在5月份的笔记本中经常使用函数时,我创建了一个单独的模块(粘贴了函数副本的python文件),并将其放在我的“全局”python目录(
~/python
)上。这个函数在我的
$pythonpath
中,因此,在下一个笔记本中,我可以简单地说

from read_data_functions import square_measurement, long_run

我刚刚在Windows命令提示符下输入了
ipython locate
,得到了路径C:\Users\Tom\.ipython。如果我打开基于web的笔记本,文档只会存储在路径C:\Users\Tom中。所以我想知道你说的配置文件目录,在我的例子中是指C:\Users\Tom吗?另外,你是说如果函数和类是在C:\Users\Tom下的一个笔记本文件(扩展名为.ipynb)中创建的,那么它们可以直接在C:\Users\Tom下的其他笔记本文件中使用吗?谢谢@pyrce定位路径将是将自定义脚本加载到每个笔记本中的位置。您将不会保存笔记本,而是保存包含您想要访问的函数的python文件。因此,您可以将扩展名为
.py
的文件保存到
.ipython
目录中,您在
.py
文件中定义的任何内容都可以在笔记本中使用。因此,我在路径C:\Users\Tom\.ipython下创建了一个.py文件,然后,我尝试在C:\Users\Tom下创建的.ipynb笔记本文件中调用此.py文件中定义的函数,但是,我得到了错误名称error:name'qqq'未定义qqq'是我函数的名称。问题出在哪里?这样,代码将为您加载的每个笔记本加载,而不仅仅是为您选择的笔记本加载。此外,我更喜欢将我的项目代码与ipython配置文件严格分开。这种方法的缺点是它严重降低了笔记本电脑的可移植性。当您想在另一台计算机上(甚至在同一台计算机上,使用另一个帐户)使用它们时,您不仅需要同步笔记本,还需要同步位于单独(隐藏)目录中的包含文件。