我在脚本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中然后使用相同的语句调用它时,它可以工作。 有没有想过为什么会这样?
答案 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”放在模块文件中,那么事情就好了。