当要求从文件导入时,Jupyter 使用过时版本的函数

BGr*_*een 5 python import jupyter-notebook jupyter-lab

在文件中mylibrary.py我有这个功能

def myfunc(a,b):
    return a+b
Run Code Online (Sandbox Code Playgroud)

在 Jupyter 笔记本中我运行

import mylibrary
mylibrary.myfunc(1,2)
Run Code Online (Sandbox Code Playgroud)

并且输出3符合预期。

但是,当我更新文件mylibrary.py以使其内容为

def myfunc(a):
    return a+1
Run Code Online (Sandbox Code Playgroud)

并在 Jupyter 中运行

import mylibrary
mylibrary.myfunc(1,2)
Run Code Online (Sandbox Code Playgroud)

输出是一个错误:

TypeError: myfunc() missing 1 required positional argument: 'b'
Run Code Online (Sandbox Code Playgroud)

显然 Jupyter 仍在使用旧版本的mylibrary.py. mylibrary.py如果我在尝试导入缓存后删除为其创建的缓存,该错误仍然存​​在。

为什么会发生这种情况,我该如何纠正?(一个明显的解决方法是在 Jupyter 笔记本中定义myfunc,而不是将其分开,现在我会这样做。但是,这解决了问题而不是实际修复它,所以我仍然不明白出了什么问题,并且结果我以后可能会陷入陷阱。因此,我认为找出问题所在是值得的。)