Уведомления

Группа в Telegram: @pythonsu

#1 Янв. 22, 2010 17:46:35

knkd
От:
Зарегистрирован: 2009-06-14
Сообщения: 225
Репутация: +  0  -
Профиль   Отправить e-mail  

Непонятно мне поведение генераторного выражения.

Почему подобный код работает в момент объявления:

#!/usr/bin/env python

(open('file.txt','a').write(x) for x in xrange(100))

# Или например:
(x for x in xrange(1000000))
Ведь по идее генераторное выражение должно возвращать генератор, а не производить вычисления на месте?
Была идея что без оператора присваивания интерпретатор игнорирует скобки, но такое выражение некорректно:
#!/usr/bin/env python

open('file.txt','a').write(x) for x in xrange(100)
x for x in xrange(1000000)
непонятно…



Офлайн

#2 Янв. 22, 2010 18:16:56

Zubchick
От:
Зарегистрирован: 2009-07-08
Сообщения: 613
Репутация: +  0  -
Профиль   Отправить e-mail  

Непонятно мне поведение генераторного выражения.

Не очень вас понял, если используете квадратные скобки то получаете список, если круглые, то генератор.
Если не используете скобки, получаете ошибку.

Какие именно вычисления производятся на месте?



Офлайн

#3 Янв. 22, 2010 18:49:20

knkd
От:
Зарегистрирован: 2009-06-14
Сообщения: 225
Репутация: +  0  -
Профиль   Отправить e-mail  

Непонятно мне поведение генераторного выражения.

Zubchick
Какие именно вычисления производятся на месте?
только что проверил (KUbuntu 9.10, Python-2.6.4) действительно не работает.

Но на работе (WinXP-SP3, Python-2.6.4) оба варианта работали идентично.
(open('file.txt','a').write(str(x)+'\n') for x in xrange(100))
[open('file.txt','a').write(str(x)+'\n') for x in xrange(100)]
Если у меня глюки то прошу прощения за беспокойство. (кстати версию 2,6,4 на работе поставил только сегодня утром. хм)



Офлайн

#4 Янв. 22, 2010 19:17:51

Zubchick
От:
Зарегистрирован: 2009-07-08
Сообщения: 613
Репутация: +  0  -
Профиль   Отправить e-mail  

Непонятно мне поведение генераторного выражения.

у меня одинаково. Версии питонов совпадают.



Отредактировано (Янв. 22, 2010 19:18:14)

Офлайн

#5 Янв. 22, 2010 20:02:17

Андрей Светлов
От:
Зарегистрирован: 2007-05-15
Сообщения: 3137
Репутация: +  14  -
Профиль   Адрес электронной почты  

Непонятно мне поведение генераторного выражения.

Кажется, глюки. Может, недосыпание?



Офлайн

#6 Янв. 22, 2010 20:19:34

knkd
От:
Зарегистрирован: 2009-06-14
Сообщения: 225
Репутация: +  0  -
Профиль   Отправить e-mail  

Непонятно мне поведение генераторного выражения.

Zubchick
у меня одинаково. Версии питонов совпадают.
Запущенное из файла, именно так в одну строчку.

Андрей Светлов
Кажется, глюки
Возможно что и так. Но блин пол-часа экспериментировал - генераторное выражение направленное в xrange(100000000) стабильно вызывало мэмори эррор…
пойду выпью валерьянки.



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version