Nik*_*kol 9 python-3.x jupyter-notebook
我有一个名为“Notebook.ipynb”的文件。我想将我自己的模块导入到patterns.py中。假设在 Patterns.py 中我有一个变量a=1
。如果我在导入后在 Jupyter 中打印它,我期望得到 1。但是如果我将变量的值更改为patterns.py,Jupyter 将继续认为该变量a
等于 1。当然,同时,我重新启动从patterns.py 导入变量的单元格
我需要做什么才能让 Jupyter 了解变量的值已更改?
实际上有一个漂亮的 IPython 扩展,称为autoreload。 这个答案展示了如何在 IPython shell 中使用它,但您也可以在 Jupyter Notebook 中执行相同的操作。只需添加:
%load_ext autoreload
%autoreload 2
Run Code Online (Sandbox Code Playgroud)
在导入要跟踪其更改的模块之前,它将在执行每个单元之前重新导入。
假设我们有一个文件 atfolder_name/filename.py
并在某些 .ipynb 中调用它
def some_func():
print("test")
Run Code Online (Sandbox Code Playgroud)
修改如下
def some_func():
print("test2")
Run Code Online (Sandbox Code Playgroud)
在这种情况下,第二次调用 .ipynb 中的以下代码
import folder_name.filename as module_name
module_name.some_func()
Run Code Online (Sandbox Code Playgroud)
回报test
要更新功能,需要重新加载模块:
importlib.reload(module_name)
# you can reload "folder_name.filename" if you do not use molude name alias
module_name.some_func()
Run Code Online (Sandbox Code Playgroud)
此代码将返回test2
Don't忘记import importlib
在运行之前reload
归档时间: |
|
查看次数: |
7632 次 |
最近记录: |