0

如果我使用的是 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)

4

1 回答 1

1

这是另一个关于 Spyder 的 Python 控制台行为的相关问题的引用:

Spyder 的主要设计目标之一是使交互式科学计算尽可能轻松。为了促进这一点,默认情况下,Spyder 在启动时会启动一个定制的交互式 Python 会话。它通过设置一个名为 PYTHONSTARTUP 的环境变量来实现此自定义,该变量指定将在解释器启动时执行的脚本的路径。您可以在首选项...控制台...高级设置下控制此设置。默认情况下,Spyder 指向 science_startup.py,它将一大堆科学模块和函数直接导入到主命名空间中,以便进行快速、交互式的探索。

因此,您遇到的行为是因为您实际上是在调用已直接放入主命名空间的numpy版本。要验证这一点,请致电anyall

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 控制台提示符处键入。

于 2013-06-21T05:44:23.110 回答