Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/303.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Spyder不承认进口条款_Python_Numpy_Ipython_Spyder - Fatal编程技术网

Python Spyder不承认进口条款

Python Spyder不承认进口条款,python,numpy,ipython,spyder,Python,Numpy,Ipython,Spyder,我正在使用Spyder 3.1.2(Python 2.7.13)。作为启动的一部分,IPython控制台设置为“” 当我想使用NumPy.zeros(shape)方法时,我可以在IPython控制台中将其称为zeros: In [12]: zeros(5) Out[12]: array([ 0., 0., 0., 0., 0.]) 我的问题出现在尝试从单独的python文件调用相同的零函数时 如果我在文件Test1.py中创建一个函数UseZeros() """ filename: T

我正在使用Spyder 3.1.2(Python 2.7.13)。作为启动的一部分,IPython控制台设置为“”

当我想使用NumPy.zeros(shape)方法时,我可以在IPython控制台中将其称为zeros:

In [12]: zeros(5)
Out[12]: array([ 0.,  0.,  0.,  0.,  0.])
我的问题出现在尝试从单独的python文件调用相同的零函数时

如果我在文件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行,使用零 返回零(4)

NameError:未定义全局名称“零”

有人能帮助我理解为什么在调用此函数时,IPython控制台不再识别该方法吗

我能找到的关于a的唯一参考是在以前的版本中修复的,并且与我所经历的不同

我之所以需要这样做,是因为我正在导入其他人使用的函数,这些人广泛使用了诸如0、1、sin、cos等命令,我不想重新定义所有内容


感谢您使用它,
import
语句仍然包含模块中命名的所有函数和类:
import numpy
,例如,将允许您以
numpy.ndarray
的身份访问
ndarray
类。如果要将给定的类或函数导入顶级命名空间,则需要专门导入它:

from numpy import ndarray
如果您正在编写一些小东西,并且不担心名称空间混乱,那么可以这样做:

from numpy import *
在您的情况下,Spyder的自动导入似乎只会影响
\uuuu main\uuuu
级别的命名空间,因此您需要在任何导入的模块中放置正确的导入语句。

(Spyder developer在此)提供自动加载Pylab和NumPy模块的选项是为了方便控制台中的交互工作,但它并不意味着要在编辑器中编写代码,因为这些代码不会在Spyder之外运行

我不敢告诉你,但是你的同事所做的是一种非常糟糕的做法,依我的拙见,我认为你能做的最好的事情就是指导他/她解决这个问题


Spyder方面无法解决/改善这种情况,因为我们不愿意推广不良做法,抱歉。

你好,Ben,谢谢你的回复。问题是我不想修改我同事的代码。问题似乎不是导入,而是重新定义函数,例如,zeros=np.zeros,cos=np.cos等。如果将zeros=np.zeros添加到Test1.py中,我提供的代码可以工作。我希望有一种方法可以使用他的代码,而不必添加所有导入和定义,因为我通常可以不指定就调用函数。你知道你的同事是如何设置的吗?一般来说,我建议只调用
np.zeros
,这样可以清楚地知道函数的定义位置/查找文档的位置。我的同事和我有相同的设置。但是从同一个python文件中调用他的方法。但是我想从我自己的python文件中调用他的方法,这就是我在我的简单示例中演示的问题所在。我认为,除非从同一个python文件中调用,否则不可能做到这一点。如果你愿意让你的代码不可维护,你可以复制粘贴。但是,如果你要共享这样的代码,你会希望有一个共享模块,可以由你们两人统一导入,否则你将无法在较长的时间内维护它。谢谢,是的,现在我已经复制粘贴,但我期待更新。部分问题是,即使我将相同的库和定义导入python文件,也会出现相同的错误。谢谢Carlos,我感谢您的反馈。我将为我的同事工作,这样我们就可以切换到一种更传统的工作结构。非常感谢您的理解,我知道修复此问题可能需要花费您相当长的时间。一点也不,我主要担心的是我无法工作,这是应该的。很高兴发现它的设计不是这样的:)