···
首页
···
开发工具
···
开发入门教程
···
网址导航
···
搜索
Ctrl K
yield
4.14 展开嵌套的序列
4.14 展开嵌套的序列,问题,你想将一个多层嵌套的序列展开成一个单层列表,解决方案,可以写一个包含 yield from 语句的递归生成器来轻松解决这个问题。比如:,from collections import Iterable,,def flatten(items, ign...
多线程yield方法
多线程 yield 方法,1. 前言,本节对 yield 方法进行深入的剖析,主要内容点如下:,,首先要了解什么是 CPU 执行权,因为 yield 方法与 CPU 执行权息息相关;,了解 yield 方法的作用,要明确 yield 方法的使用所带来的运行效...
4.13 创建数据处理管道
4.13 创建数据处理管道,问题,你想以数据管道(类似Unix管道)的方式迭代处理数据。比如,你有个大量的数据需要处理,但是不能将它们一次性放入内存中。,解决方案,生成器函数是一个实现管道机制的好办法。为了演示,假定你要...
4.3 使用生成器创建新的迭代模式
4.3 使用生成器创建新的迭代模式,问题,你想实现一个自定义迭代模式,跟普通的内置函数比如 range() , reversed() 不一样。,解决方案,如果你想实现一种新的迭代模式,使用一个生成器函数来定义它。,下面是一个生产某个范...
2.14 合并拼接字符串
2.14 合并拼接字符串,问题,你想将几个小的字符串合并为一个大的字符串,解决方案,如果你想要合并的字符串是在一个序列或者 iterable 中,那么最快的方式就是使用 join() 方法。比如:,>>> parts = ['Is', 'Chic...
8.22 不用递归实现访问者模式
8.22 不用递归实现访问者模式,问题,你使用访问者模式遍历一个很深的嵌套树形数据结构,并且因为超过嵌套层级限制而失败。 你想消除递归,并同时保持访问者编程模式。,解决方案,通过巧妙的使用生成器可以在树遍历或搜索算...
12.12 使用生成器代替线程
12.12 使用生成器代替线程,问题,你想使用生成器(协程)替代系统线程来实现并发。这个有时又被称为用户级线程或绿色线程。,解决方案,要使用生成器实现自己的并发,你首先要对生成器函数和 yield 语句有深刻理解。 yield 语...
9.22 定义上下文管理器的简单方法
9.22 定义上下文管理器的简单方法,问题,你想自己去实现一个新的上下文管理器,以便使用with语句。,解决方案,实现一个新的上下文管理器的最简单的方法就是使用 contexlib 模块中的 @contextmanager 装饰器。 下面是一个...