关于生成器的那些事儿
我猜大家对于生成器肯定并不陌生,但是为了能让我愉快的继续装逼,我们还是用点篇幅讲一下什么是生成器吧。比如在 Python 里,我们想生成一个范围 (1,100000) 的一个 list,于是我们无脑写了如下的代码出来
注1:这里有同学提出了为什么我们不直接返回 range(start,stop) ,Nice question,这里涉及到一个基础问题, range 的机制究竟是怎样的。这就要分版本而论了,在 Python 2.x 的版本中, range(start,stop)其实本质上是预先生成一个 list ,而 list 对象是一个 Iterator ,因此可以被 for 语句所使用。
然后在 Python 2.x 中还有一个语句叫做 xrange ,其生成的是一个 Generator 对象。
在 Python 3 中事情发生了一点