【发布时间】:2023-03-28 01:10:01
【问题描述】:
对于我正在编写的代码,我正在运行scipy.curve_fit() 数万次。我注意到在relevant curve_fit() source code,特别是在源代码中的lines 430 和431(在leastsq() 函数中),有两个import 语句:
from numpy.dual import inv
from numpy.linalg import LinAlgError
我在循环中调用curve_fit()。我想知道这些 import 语句加载的模块是否会在循环迭代完成后保留,或者模块是否超出范围并需要在循环的每次迭代中重新加载。
注意:import 语句仅在源代码第 427 行上的 if full_output: 语句计算结果为真时才被调用。 full_output=1 是 curve_fit() 传递给 leastsq() 的内容,因此确实调用了 import 语句。
附加说明:我不是在询问是否多次导入模块(这么多),而是在循环完成后(或在每次循环的迭代)。
更多注释:
>>>for x in range(0,1):
... import os
...
>>> os
<module 'os' from '/home/lars/env/common/lib64/python2.7/os.pyc'>
这可行,但如果我改为定义一个函数:
def a(b):
if a==True:
import scipy
然后
for i in range(10):
a(True)
scipy
NameError: name 'scipy' is not defined
这是怎么回事?
【问题讨论】:
-
@ev-br,这些问题并不是我要问的。我本质上是在询问循环迭代结束时循环中导入的模块是否超出范围,或者代码是否保留它们。