Python如何跨Jupyter Notebook文件调用函数及共享全局变量
跨Jupyter Notebook调用的实现方法
方案1:使用%run魔法命令(最简单,适合大部分场景)
- 直接在
function.ipynb的代码最顶部添加运行指令:%run ./Dates.ipynb - 该指令会完整执行
Dates.ipynb内的所有代码,其中定义的input_dates()、year()、month()函数,以及全局变量start_date、exit_date、from_year、from_month等都会直接注入到当前notebook的运行环境中,可直接调用。 - 修正后的完整
function.ipynb代码如下:
# 导入Dates.ipynb的所有内容 %run ./Dates.ipynb # 补充本文件缺失的依赖导入 import os from dateutil.relativedelta import relativedelta # 自行替换为实际的文件根路径 Fu_path = "你的本地文件根目录" def path(): # 新建日期副本用于迭代,避免修改全局的start_date current_date = start_date while current_date <= exit_date: # 用f-string自动补零月份,无需额外if判断 path1 = f"{Fu_path}\\{current_date.year}\\{current_date.month:02d}" current_date += relativedelta(months=1) dir_list = os.listdir(path1) print(dir_list) path()
注意:不需要再重复调用
input_dates(),%run执行Dates.ipynb时已经触发过一次输入操作,重复调用会导致用户需要二次输入日期。
方案2:使用import_ipynb库(按需调用,避免直接执行全文件代码)
- 先安装依赖:
pip install import-ipynb - 在
function.ipynb中按需导入模块即可,调用函数和变量时需要加模块前缀:
import import_ipynb import Dates # 手动调用Dates里的函数 Dates.input_dates() Dates.year() Dates.month() # 变量调用示例 print(Dates.start_date) print(Dates.from_year)
内容的提问来源于stack exchange,提问作者Krishna Gupta
相关产品推荐
相关产品推荐

