1

我在脚本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 中,然后使用相同的语句调用它时,它可以工作。任何想法为什么会发生这种情况?

4

2 回答 2

1

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

看看这里。 你可以试试:

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)

如果您从不同的新模块进行多次导入,这更健壮并且应该是首选方法。

于 2013-08-09T10:40:45.840 回答
0

您在 problem1.py 文件中没有“import numpy as np”,因此在函数定义的范围内,对 np 的引用无效,并且该错误可能导致调用者中的定义不可用。

一旦你把“import numpy as np”放在模块文件中,事情就应该没问题了。

于 2013-08-09T10:53:52.493 回答