我想在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
答案 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
感谢您的评论!