1 import asyncio
2
3 def addone(x,y):
4 x = x+1
5 y = y+1
6 print("x={}".format(x))
7
8 async def compute(x, y):
9 print('Compute {} + {} ...'.format(x, y))
10 #await asyncio.sleep(1.0)
11 await addone(x,y)
12 return x + y
13
14 async def print_sum(x, y):
15 result = await compute(x, y)
16 print('{} + {} = {}'.format(x, y, result))
17
18 loop = asyncio.get_event_loop()
19 loop.run_until_complete(print_sum(1, 2))
20 loop.close()
上面这样的代码报出来结果是这样 await addone(x,y) TypeError: object int can't be used in 'await' expression
但是如果改成这样
1 import asyncio
2
3 def addone(x,y):
4 x = x+1
5 y = y+1
6
7
8 async def compute(x, y):
9 print('Compute {} + {} ...'.format(x, y))
10 await asyncio.sleep(1.0)
11 #await addone(x,y)
12 return x + y
13
14 async def print_sum(x, y):
15 result = await compute(x, y)
16 print('{} + {} = {}'.format(x, y, result))
17
18 loop = asyncio.get_event_loop()
19 loop.run_until_complete(print_sum(1, 2))
20 loop.close()
第二种就不会报错,那么 await 后面只能调用异步的函数吗?求大神解答
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.