如果我使用的是 Python 2.7 并且刚刚开始使用 Spyder IDE。
如果我这样做,在终端 python 版本上
any(i ==1 for i in [1,2,3,4])
我得到答案
True
如果我在 Spyder 中做同样的事情,我会得到响应
<generator object <genexpr> at 0x3fc8af0>
为什么这样做?我是否缺少设置,或者这可能是 Python 的不同版本(它说 2.7)
如果我使用的是 Python 2.7 并且刚刚开始使用 Spyder IDE。
如果我这样做,在终端 python 版本上
any(i ==1 for i in [1,2,3,4])
我得到答案
True
如果我在 Spyder 中做同样的事情,我会得到响应
<generator object <genexpr> at 0x3fc8af0>
为什么这样做?我是否缺少设置,或者这可能是 Python 的不同版本(它说 2.7)
这是另一个关于 Spyder 的 Python 控制台行为的相关问题的引用:
Spyder 的主要设计目标之一是使交互式科学计算尽可能轻松。为了促进这一点,默认情况下,Spyder 在启动时会启动一个定制的交互式 Python 会话。它通过设置一个名为 PYTHONSTARTUP 的环境变量来实现此自定义,该变量指定将在解释器启动时执行的脚本的路径。您可以在首选项...控制台...高级设置下控制此设置。默认情况下,Spyder 指向 science_startup.py,它将一大堆科学模块和函数直接导入到主命名空间中,以便进行快速、交互式的探索。
因此,您遇到的行为是因为您实际上是在调用已直接放入主命名空间的numpy
版本。要验证这一点,请致电any
all
np.any(i ==1 for i in [1,2,3,4])
或者
np.all(i ==1 for i in [1,2,3,4])
在 Spyder Python 控制台中,您将获得相同的生成器对象被返回。顺便说一句,这最后两个调用神奇地工作,因为启动脚本也可以import numpy as np
。有关导入的其他内容的更多详细信息,请scientific
在 Spyder Python 控制台提示符处键入。