在python函数中使用numpy中的函数

时间:2014-02-07 09:04:52

标签: python python-2.7 numpy enthought

我想在Python中定义一个函数,它本身使用numpy函数,即正弦函数'sin'。为了简化问题,我制作了一个测试函数“sine_test.py”,如下所示:

import numpy
def sine_test(theta):
    return numpy.sin(theta)

我还想从名为“use_sine_test.py”的脚本运行此函数并保存在同一目录中,其内容如下:

import numpy
from sine_test import sine_test
u=sine_test(1)

我希望这可以将u定义为1弧度的正弦值,约为0.84。 “use_sine_test.py”和“sine_test.py”都在同一个文件夹中(D:/ Python)。但是,如果我使用运行按钮运行“use_sine_test.py”Python脚本,我会收到“NameError:全局名称'sin'未定义”错误,如下所示。

任何可能导致此问题的想法?

祝你好运, 库尔特

%run D:/Python/use_sine_test.py
---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
C:\Program Files\Enthought Python 7.2.2\lib\site-packages\IPython\utils\py3compat.py in execfile(fname, glob, loc)
    166             else:
    167                 filename = fname
--> 168             exec compile(scripttext, filename, 'exec') in glob, loc
    169     else:
    170         def execfile(fname, *where):

D:\Python\use_sine_test.py in <module>()
      1 import numpy
      2 from sine_test import sine_test
----> 3 u=sine_test(1)

D:\Python\sine_test.py in sine_test(theta)
      1 import numpy
----> 2 def sine_test(theta):
      3     return numpy.sin(theta)

NameError: global name 'sin' is not defined

2 个答案:

答案 0 :(得分:0)

更多评论而不是答案(但我无法在评论中正确放置代码): 如果你将下一个代码放在一个'something.py'文件中,而不仅仅是在终端中执行python something.py,它是否有效?

import numpy
def sine_test(theta):
    return numpy.sin(theta)
u=sine_test(1)

只是为了查看它是否与错误的安装相关,或者它是否与ipython相关,或者它是否与文件如何相互作用有关。这样可以缩小问题范围。如果这样可以正常工作,那么它与文件如何相互协作或与ipython相关。下一步不仅仅是像你一样在不同的文件中测试它,而不是在ipython中测试它,而只是在终端中查看它是否在python中运行,以及它是否不是ipython问题。如果它也有效,那可能与你的ipython有关。

答案 1 :(得分:0)

所有

根据BrenBarn的评论,我试图重新启动Canopy中的代码编辑器,它现在似乎有效:

Welcome to EPD's interactive data-analysis environment!
 with pylab-backend: wx
Type '?' for more information.

Welcome to pylab, a matplotlib-based Python environment [backend: WXAgg].
For more information, type 'help(pylab)'.

%run D:/Python/use_sine_test.py

u
Out[2]: 0.8414709848078965

感谢您的评论!