Python生成器和协程怎么用
导读:本文共9394字符,通常情况下阅读需要31分钟。同时您也可以点击右侧朗读,来听本文内容。按键盘←(左) →(右) 方向键可以翻页。
摘要:在我们之前的示例的基础上,我们可以保存生成器的特定实例。例如,如果我只想打印斐波那契数列的第 10-20 个值怎么办?首先,我将生成器保存在一个变量中,以便我可以重用它。限制对我来说并不重要,所以我会使用大的限制。使用我的循环范围来更容易显示内容,因为这会使限制逻辑接近打印语句。fib=fibonacci(100)接下来,我将使用循环跳过前 10 个元素。for_inrange(10):next... ...
目录
(为您整理了一些要点),点击可以直达。在我们之前的示例的基础上,我们可以保存生成器的特定实例。
可重复使用。
有状态(到目前为止共有的字母。)
本质上是迭代的,因为我们不知道我们会得到多少个字符串。
counter.close()#manuallyendthecoroutine
将其实例保存为变量,例如counter
,
用counter.send(None)
,counter.next()
或next(counter)
输入协程,
用counter.send()
发送数据,
如有必要,用counter.close()
关闭它。
conn=Connection("example.com")
conn.addr=None
conn=Connection("localfile")
我们的使用示例只需要进行一处更改:一旦我们知道我们失去了连接,我们就使用sender.throw(ConnectionError)
抛出异常:
conn.addr=None
sender.throw(ConnectionError)#ALERTTHESENDER!
fib.close()
协程也可以以类似的方式进行切换。例如,在我们的 连接示例中,如果我们创建第二个协程来处理将数据写入文件会怎样?如果我们遇到连接错误,我们可以切换到在幕后使用它。
conn=Connection("example.com")
conn.addr=None
sender.throw(ConnectionError)#ALERTTHESENDER!
Python生成器和协程怎么用的详细内容,希望对您有所帮助,信息来源于网络。