【发布时间】:2017-11-14 10:08:36
【问题描述】:
我正在使用 Spyder 3.1.2 (Python 2.7.13)。作为启动的一部分,IPython 控制台设置为“Automatically load Pylab and NumPy modules”。
当我想使用 NumPy.zeros(shape) 方法时,我可以在 IPython 控制台中将其作为零调用:
In [12]: zeros(5)
Out[12]: array([ 0., 0., 0., 0., 0.])
我的问题来自于尝试从单独的 python 文件调用相同的 zeros 函数。
如果我在文件 Test1.py 中创建函数 UseZeros()
"""
filename: Test1.py
"""
def UseZeros():
return zeros(4)
我从一个单独的文件 Test2.py 中调用它:
"""
filename: Test2.py
"""
import Test1
testArr1 = zeros(5)
testArr2 = Test1.UseZeros()
在此脚本中,testArr1 = zeros(5) 工作正常,但在调用 Test1.UseZeros() 时,我收到一条错误消息,指出未定义全局名称“zeros”。
文件“C:/Users/Gareth/Test2.py”,第 8 行,在 testArr2 = Test1.UseZeros()
文件“Test1.py”,第 7 行,在 UseZeros 中 返回零(4)
NameError:未定义全局名称“zeros”
有人能帮我理解为什么在调用此函数时,IPython 控制台不再识别该方法吗?
我能找到的对 similar problem 的唯一引用已在以前的版本中修复,并且与我所遇到的不同。
我需要这个工作的原因是我正在导入其他人使用的函数,这些人广泛使用了诸如 zeros、ones、sin、cos 等命令,我不想重新定义一切。
谢谢
【问题讨论】:
标签: python numpy ipython spyder