如果我使用的是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)
答案 0 :(得分:1)
以下是关于Spyder的Python控制台行为的另一个related question的引用:
Spyder的主要设计目标之一是制作互动科学 计算尽可能无痛。为此,默认情况下 Spyder推出了定制的交互式Python会话 启动。它通过设置环境实现此自定义 名为PYTHONSTARTUP的变量,它指定脚本的路径 这将在翻译启动时执行。你可以控制它 设置在首选项...控制台...高级设置下。默认情况下, Spyder指向scientific_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
。有关导入其他内容的更多详细信息,请在Spyder Python控制台提示符下键入scientific
。