IPython无法识别更新的模块

时间:2013-08-09 01:02:14

标签: python numpy ipython

我在脚本problem1.py中有一个函数:

def normal_method(target):
    a = np.array(np.arange(1,target))
    divisible_numbers = a[(a%3==0)|(a%5==0)]
    sum_value = np.sum(divisible_numbers)
    print sum_value

使用

在IPython窗口中调用此函数时
import numpy as np
from problem1 import normal_method
%timeit normal_method(100)

它给我TypeError,说normal_method不带参数。但是当我将函数粘贴到IPython中然后使用相同的语句调用它时,它可以工作。 有没有想过为什么会这样?

2 个答案:

答案 0 :(得分:1)

您的问题是交互式Python没有重新加载模块。

Take a look here. 你可以尝试:

import problem1
problem1 = reload(problem1)
%timeit problem1.normal_method(10)

或者只是从命令提示符shell运行:

python test.py

test.py包含:

import numpy as np
from problem1 import normal_method
%timeit normal_method(100)

如果您从不同的新模块进行多次导入,这将更加强大,应该是首选方法。

答案 1 :(得分:0)

你在problem1.py文件中没有“import numpy as np”,因此在函数定义的范围内,ref to np是无效的,并且该错误可能使调用者的定义不可用。 / p>

一旦你将“import numpy as np”放在模块文件中,那么事情就好了。