zoukankan      html  css  js  c++  java
  • 零基础学python-19.9 生成器函数与生成器表达式

    这一章节主要讨论生成器函数与生成器表达式的联系与区别。

    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
    >>> 


    总结,这一章节主要说明了生成器函数与生成器表达式的联系与区别。

    这一章节就说到这里,谢谢大家

    ------------------------------------------------------------------

    点击跳转零基础学python-目录

    版权声明:本文为博主原创文章,未经博主允许不得转载。

  • 相关阅读:
    ACM模板(Java)
    【HDU 6008】Worried School(模拟)
    【HDU 6005】Pandaland(Dijkstra)
    jQuery和js使用点滴
    springmvc入门(1)
    MyBatis延迟加载和缓存(4)
    MyBatis高级映射查询(3)
    教你如何下载微信公众号的音频文件
    MyBatis代理开发(2)
    MyBatis入门程序(1)
  • 原文地址:https://www.cnblogs.com/raylee2007/p/4896711.html
Copyright © 2011-2022 走看看