为什么我不能在异步函数内使用'yield from'?

8 浏览
0 Comments

为什么我不能在异步函数内使用'yield from'?

在Python 3.6中,我能够在协程中使用yield,但无法使用yield from

下面是我的代码。在第3行,我等待另一个协程。在第4行,我尝试yield from一个文件。为什么Python 3.6不允许我这样做?

async def read_file(self, filename):
    with tempfile.NamedTemporaryFile(mode='r', delete=True, dir='/tmp', prefix='sftp') as tmp_file:
        await self.copy_file(filename, tmp_file)
        yield from open(tmp_file)

以下是Python 3.6对上述代码引发的异常:

  File "example.py", line 4
    yield from open(tmp_file)
    ^
SyntaxError: 'yield from' inside async function

0