Python 3.5:“;与“异步”;导致合成错误。为什么?

Python 3.5:“;与“异步”;导致合成错误。为什么?,python,python-3.x,coroutine,Python,Python 3.x,Coroutine,我使用的是Python3.5,据我所知,它应该可以通过语法访问async,但是当我尝试使用它时,我会得到一个语法错误。我做错了什么 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 sessio

我使用的是Python3.5,据我所知,它应该可以通过语法访问
async,但是当我尝试使用它时,我会得到一个语法错误。我做错了什么

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
[14]中的
:sys.version
Out[14]:“3.5.2(默认,2016年10月11日,04:59:56)\n[GCC 4.2.1兼容苹果LLVM 8.0.0(clang-800.0.38)]”
在[15]中:与aiohttp.ClientSession()作为会话异步:
文件“”,第1行
与aiohttp.ClientSession()作为会话异步:
^
SyntaxError:无效语法

如果没有
async
功能,则不能使用
async with
。作为:

在async def函数外部使用async是一种语法错误

但这一代码将起作用:

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

或者看看。

引用您链接的页面中的示例:“在异步定义函数之外使用异步是一个语法错误。”如果没有上下文,您不能使用
async with
。尝试在异步函数中使用它。@vaultah请将您的注释移动到一个答案,我将接受相关:(基本相同的错误,但不同的
async
construct)我认为您引用了错误的部分。正确的引用应该是中的最后一句:“在
async def
函数之外使用
async with
SyntaxError
。@MSeifert谢谢,已更新!