[issue32113] Strange behavior with await in a generator expression
Ivan Levkivskyi
report at bugs.python.org
Wed Nov 22 09:42:41 EST 2017
New submission from Ivan Levkivskyi <levkivskyi at gmail.com>:
PEP 530 is not very clear about `await` in generator expressions. But when I try it, the error is a bit confusing:
>>> async def g(i):
... print(i)
...
>>> async def f():
... result = list(await g(i) for i in range(3))
... print(result)
...
>>> f().send(None)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<stdin>", line 2, in f
TypeError: 'async_generator' object is not iterable
At the same time a (seemingly) equivalent list comprehension works fine:
>>> async def f():
... result = [await g(i) for i in range(3)]
... print(result)
...
>>> f().send(None)
0
1
2
[None, None, None]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
StopIteration
I would say that the first case should either behave as a second one, or raise a syntax error.
Or is it actually an intended behavior?
----------
components: Interpreter Core
messages: 306732
nosy: levkivskyi, yselivanov
priority: normal
severity: normal
status: open
title: Strange behavior with await in a generator expression
type: behavior
versions: Python 3.6, Python 3.7
_______________________________________
Python tracker <report at bugs.python.org>
<https://bugs.python.org/issue32113>
_______________________________________
More information about the Python-bugs-list
mailing list