【发布时间】:2019-04-09 02:27:14
【问题描述】:
我正在学习协程并尝试了一些教程,我找到了这段代码。
>>> def g(n):
... while n >= 0:
... r = (yield n)
... if r:
... n = r
... else:
... n -= 1
我问自己为什么会有r = (yield n),然后我修改代码如下,
>>> def f(n):
... while n >= 0:
... r = yield n
... if r:
... n = r
... else:
... n -= 1
...
>>>
之后我猜想当send(value)被调用时,r = yield n会返回值,r = (yield n)会返回一个元组,比如(value,)。
于是我单独测试了代码,结果是:
>>>
>>> gc = g(5)
>>> gc.send(None)
5
>>> type(gc.send(4))
<class 'int'>
>>>
>>> fc = f(5)
>>> fc.send(None)
5
>>> fc.send(4)
4
>>> type(fc.send(4))
<class 'int'>
两个结果都是“int”类型,而不是元组类型。 我真的很困惑,这两个代码之间有什么区别? 好像没什么区别。
【问题讨论】:
标签: python python-3.x coroutine