任何()和所有()的spyderlib搞笑行为

时间:2013-06-21 04:00:12

标签: python-2.7 spyder

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

1 个答案:

答案 0 :(得分:1)

以下是关于Spyder的Python控制台行为的另一个related question的引用:

  

Spyder的主要设计目标之一是制作互动科学   计算尽可能无痛。为此,默认情况下   Spyder推出了定制的交互式Python会话   启动。它通过设置环境实现此自定义   名为PYTHONSTARTUP的变量,它指定脚本的路径   这将在翻译启动时执行。你可以控制它   设置在首选项...控制台...高级设置下。默认情况下,   Spyder指向scientific_startup.py,它导入了整个主机   科学模块和函数直接进入主命名空间   快速,互动的探索很容易。

因此,您遇到的行为是因为您实际上正在调用已直接放入主命名空间的numpyany 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。有关导入其他内容的更多详细信息,请在Spyder Python控制台提示符下键入scientific