2013-06-21 3 views
0

Если я нахожусь на Python 2.7, и я только что начал использовать IDE Spyder.spyderlib смешное поведение с any() и all()

На терминальном версии питона, если я делаю

any(i ==1 for i in [1,2,3,4]) 

Я получаю ответ

True

Хотя если бы я сделать то же самое в Spyder я получаю ответ

<generator object <genexpr> at 0x3fc8af0> 

Почему это так? Я пропускаю установку или может ли это быть другая версия Python (это говорит +2,7)

+0

Вы имеете в виду оболочку в среде IDE? – satoru

+0

Hi @ Satoru.Logic благодарит за это. Да, ответ первого ответа от оболочки терминала. (Я на Linux, поэтому, если я набираю 'python' в командной строке в окне терминала). –

+0

Я попробую с моей версией под OSX. – satoru

ответ

1

Вот цитата из другого related question о Python поведения консоли Spyder в:

Одна из целей первичного дизайна Spyder является сделать интерактивные научные вычисления как можно более безболезненные. Чтобы облегчить это, по умолчанию Spyder запускает настраиваемый интерактивный сеанс Python при запуске . Он достигает этой настройки, устанавливая переменную переменной PYTHONSTARTUP, которая указывает путь к сценарию , который будет выполнен при запуске интерпретатора. Вы можете управлять этим параметром в разделе «Настройки» ... Консоль ... Дополнительные настройки. По умолчанию Spyder указывает на научный_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.

+0

thansk @Jed , изменение pythonpath обратно по умолчанию решило проблему. –

+1

@TahnoonPasha, научный сценарий запуска загружается только для «интерактивных» переводчиков в Spyder. Если вам нужно простое поведение ванильного Python, не отключая параметр научного запуска, создайте сценарий в редакторе, нажмите F6, установите сценарий в «Выполнение в новом специализированном интерпретаторе Python».«Если вы хотите взаимодействовать с интерпретатором после завершения скрипта, который также можно активировать из этого диалогового окна, тогда запустите скрипт. Интерпретатор, который запускается таким образом, не импортирует научный сценарий запуска, даже если параметр сценария научного запуска – Jed

+0

еще один отличный совет. Еще раз спасибо @Jed –