在文件中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,而不是将其分开,现在我会这样做。但是,这解决了问题而不是实际修复它,所以我仍然不明白出了什么问题,并且结果我以后可能会陷入陷阱。因此,我认为找出问题所在是值得的。)
给定一个向量v,我想创建一个所有行都等于的 2D numpy 数组v。做这个的最好方式是什么?必须有比使用 for 循环更快的方法来做到这一点。有像fill,ones和之类的函数zeros可以用一个值填充整个数组,但是用相同的值填充每一列,但每列的值不同呢?
例如,假设我调用时numpy.random.uniform(0, 1, 10)没有调用任何与种子相关的函数。NumPy 必须使用一些默认种子,但我在文档中找不到它。当没有指定种子时,NumPy 如何种子它的随机数?