这一章节主要讨论生成器函数与生成器表达式的联系与区别。
1.联系
* 两者之间都是返回生成器。下面是示例代码
>>> g=(x for x in range(5)) >>> g <generator object <genexpr> at 0x01E673F0> >>>
>>> def test(): for x in range(5): yield x >>> test() <generator object test at 0x01E67440> >>>
* 两者都支持手动迭代或者自动迭代。下面是示例代码
>>> g=(x for x in range(5)) >>> next(g) 0 >>> for item in g: print(item) 1 2 3 4 >>>
>>> def test(): for x in range(5): yield x >>> g=test() >>> next(g) 0 >>> for item in g: print(item) 1 2 3 4 >>>
2.不同
生成器函数它里面可以放置更多的,而且对于send的支持,个人认为函数比表达式来的容易,例如:
如果我想传一个参数到表达式或者函数里面进行运行,然后打印,这个时候表达式很难完成(暂时笔者没有想到表达式的实现,如果有读者能够实现,请告知,谢谢)。
下面只是给出函数的实现:
>>> def test(): for x in range(5): y=(yield x)+2 print(y) >>> g=test() >>> next(g) 0 >>> g.send (3) 5 1 >>>
总结,这一章节主要说明了生成器函数与生成器表达式的联系与区别。
这一章节就说到这里,谢谢大家
------------------------------------------------------------------
版权声明:本文为博主原创文章,未经博主允许不得转载。