Не могу поместить оператор печати в генератор - PullRequest
0 голосов
/ 28 августа 2018

Что здесь происходит? Почему последний не работает?

def foo(arg): print(arg)
for _ in (foo(x) for x in range(10)): pass   # Works
for _ in (print(x) for x in range(10)): pass # Doesn't work

1 Ответ

0 голосов
/ 28 августа 2018

Это будет работать в Python 3.x, но не в Python 2.x, потому что print является оператором в Python 2.x, и вы не можете поместить оператор в выражение генератора.

Если вы настаиваете, вы можете заставить его работать, преобразовав print в Python 3-совместимую функцию в Python 2.x с:

from __future__ import print_function

Но даже в Python 3.x не рекомендуется помещать функцию, которая всегда возвращает None, в выражение генератора, поскольку генератор предназначен для получения значений.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...