在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

最佳答案

根据PEP 525,它在Python 3.6中引入了异步生成器:



如您所见,答案归结为“实现起来太难了,反正您也不需要它”。

关于python - 为什么我不能在异步函数中 'yield from'?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47376408/

10-13 08:34