Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/360.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python3.5-Name';等待&x27;没有定义_Python_Async Await_Coroutine_Python 3.5 - Fatal编程技术网

Python3.5-Name';等待&x27;没有定义

Python3.5-Name';等待&x27;没有定义,python,async-await,coroutine,python-3.5,Python,Async Await,Coroutine,Python 3.5,我正在尝试在Python3.5中使用新的await语法进行协作 我有这样一个简单的例子: #/usr/bin/env python 导入异步 @异步协同程序 def加法器(*参数,延迟): 尽管如此: 异步睡眠产生的收益(延迟) 打印(总和(args)) def main(): 异步任务(加法器(1,2,3,延迟=5)) 异步任务(加法器(10,20,延迟=3)) loop=asyncio.get\u event\u loop() loop.run_forever() 如果名称=“\uuuuu

我正在尝试在Python3.5中使用新的
await
语法进行协作

我有这样一个简单的例子:

#/usr/bin/env python
导入异步
@异步协同程序
def加法器(*参数,延迟):
尽管如此:
异步睡眠产生的收益(延迟)
打印(总和(args))
def main():
异步任务(加法器(1,2,3,延迟=5))
异步任务(加法器(10,20,延迟=3))
loop=asyncio.get\u event\u loop()
loop.run_forever()
如果名称=“\uuuuu main\uuuuuuuu”:
main()
我将
产量从
行更改为使用
wait
关键字:

等待异步睡眠(延迟)

我得到了
SyntaxError

  File "./test.py", line 8
    await asyncio.sleep(delay)
                ^
SyntaxError: invalid syntax
所以我尝试
等待(asyncio.sleep(delay))
看看会发生什么:

Task exception was never retrieved
future: <Task finished coro=<adder() done, defined at c:\python35\Lib\asyncio\coroutines.py:198> exception=NameError("name 'await' is not defined",)>
Traceback (most recent call last):
  File "c:\python35\Lib\asyncio\tasks.py", line 239, in _step
    result = coro.send(value)
  File "c:\python35\Lib\asyncio\coroutines.py", line 200, in coro
    res = func(*args, **kw)
  File "./test.py", line 8, in adder
    await (asyncio.sleep(delay))
NameError: name 'await' is not defined
Task exception was never retrieved
future: <Task finished coro=<adder() done, defined at c:\python35\Lib\asyncio\coroutines.py:198> exception=NameError("name 'await' is not defined",)>
Traceback (most recent call last):
  File "c:\python35\Lib\asyncio\tasks.py", line 239, in _step
    result = coro.send(value)
  File "c:\python35\Lib\asyncio\coroutines.py", line 200, in coro
    res = func(*args, **kw)
  File "./test.py", line 8, in adder
    await (asyncio.sleep(delay))
NameError: name 'await' is not defined
编辑:
我假设将paren添加到
await
行是试图调用函数
await()
——这就是为什么它不起作用,并给我一个
NameError
。但是为什么在这两个示例中都不能识别关键字?

您必须将函数声明为
async
才能使用
wait
。替换来自的产量是不够的

#! /usr/bin/env python
import asyncio

@asyncio.coroutine
async def adder(*args, delay):
    while True:
        await asyncio.sleep(delay)
        print(sum(args))


def main():
    asyncio.Task(adder(1, 2, 3, delay=5))
    asyncio.Task(adder(10, 20, delay=3))
    loop = asyncio.get_event_loop()
    loop.run_forever()

if __name__ == "__main__":
    main()

您需要将函数声明为
async
,以使其正常工作。只有在文件中包含使用
async def
声明的a函数时,
await
关键字才会启用–有关详细信息,请参阅。

根据,只有在使用新的
async def
语法定义的函数中才能识别
await
关键字,这样就不需要导入