web-dev-qa-db-fra.com

Python 3.5: "async avec" entraîne SyntaxError. Pourquoi?

J'utilise Python 3.5, qui, selon PEP 492 devrait avoir accès au async with syntaxe, mais j'obtiens une SyntaxError lorsque j'essaie de l'utiliser. Qu'est-ce que je fais mal?

In [14]: sys.version
Out[14]: '3.5.2 (default, Oct 11 2016, 04:59:56) \n[GCC 4.2.1 Compatible Apple LLVM 8.0.0 (clang-800.0.38)]'

In [15]: async with aiohttp.ClientSession() as session:
  File "<ipython-input-15-9799c5ce74cf>", line 1
    async with aiohttp.ClientSession() as session:
             ^
SyntaxError: invalid syntax
15
vaer-k

Vous ne pouvez pas utiliser async with sans fonction async. Comme le les docs disent :

C'est une SyntaxError pour utiliser async avec l'extérieur d'une fonction def async.

Mais ce code fonctionnera:

async def some_function():
    async with aiohttp.ClientSession() as session:
        pass

Ou jetez un œil à l'exemple de la docs .

27
sobolevn