I\'m trying to use Python 3.6\'s async comprehensions in a MacOS Sierra (10.12.2), but I\'m receiving a SyntaxError.
Here is the code I\'ve tried:
This behaves as expected. The issue is that these forms of comprehensions are only allowed inside async def functions. Outside (i.e in the top-level as entered in your REPL), they raise a SyntaxError as defined.
This is stated in the specification section of the PEP, specifically, for asynchronous comprehensions:
Asynchronous comprehensions are only allowed inside an
async deffunction.
Similarly, for using await in comprehensions:
This is only valid in
async deffunction body.
As for async loops, you'll need both an object that conforms to the necessary interface (defines __aiter__) and placed inside an async def function. Again, this is specified in the corresponding PEP:
It is a
TypeErrorto pass a regular iterable without__aiter__method toasync for. It is aSyntaxErrorto useasync foroutside of anasync deffunction.