python生成器generator用法实例分析

 更新时间:2015年06月04日 12:25:39   作者:MaxOmnis  
这篇文章主要介绍了python生成器generator用法,实例分析了python生成器的相关使用技巧,需要的朋友可以参考下

本文实例讲述了python生成器generator用法。分享给大家供大家参考。具体如下:

使用yield,可以让函数生成一个结果序列,而不仅仅是一个值

例如:

def countdown(n): 
  print "counting down" 
  while n>0: 
    yield n #生成一个n值 
    n -=1 
>>> c = countdown(5) 
>>> c.next() 
counting down 
5 
>>> c.next() 
4 
>>> c.next() 
3 

next()调用生成器函数一直运行到下一条yield语句为止,此时next()将返回值传递给yield.而且函数将暂停中止执行。再次调用时next()时,函数将继续执行yield之后的语句。此过程持续执行到函数返回为止。

通常不会像上面那样手动调用next(), 而是使用for循环,例如:

>>> for i in countdown(5): 
...   print i 
...   
counting down 
5 
4 
3 
2 
1 

next(), send()的返回值都是yield 后面的参数, send()跟next()的区别是send()是发送一个参数给(yield n)的表达式,作为其返回值给m, 而next()是发送一个None给(yield n)表达式, 这里需要区分的是,一个是调用next(),send()时候的返回值,一个是(yield n)的返回值,两者是不一样的.看输出结果可以区分。

def h(n): 
  while n>0: 
    m = (yield n) 
    print "m is "+str(m) 
    n-=1 
    print "n is "+str(n) 
>>> p= h(5) 
>>> p.next() 
5 
>>> p.next() 
m is None 
n is 4 
4 
>>> p.send("test") 
m is test 
n is 3 
3 

希望本文所述对大家的Python程序设计有所帮助。

相关文章

  • python 随机密码生成器的实现示例

    python 随机密码生成器的实现示例

    随机密码生成器是一种非常有用的工具,它可以帮助我们生成随机的、复杂的密码,提高我们的账户安全性,本文就来介绍一下python 随机密码生成器的实现示例,感兴趣的可以了解一下
    2023-11-11
  • Python用字典统计CSV数据的实现示例

    Python用字典统计CSV数据的实现示例

    python提供了许多处理CSV文件的工具,其中字典是一个非常高效的数据结构,本文主要介绍了Python用字典统计CSV数据的实现示例,具有一定的参考价值,感兴趣的可以了解一下
    2024-05-05
  • Python实现Restful API的例子

    Python实现Restful API的例子

    今天小编就为大家分享一篇Python实现Restful API的例子,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-08-08
  • 使用Pytorch训练分类问题时,分类准确率的计算方式

    使用Pytorch训练分类问题时,分类准确率的计算方式

    这篇文章主要介绍了使用Pytorch训练分类问题时,分类准确率的计算方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-09-09
  • python温度转换华氏温度实现代码

    python温度转换华氏温度实现代码

    这篇文章主要介绍了python温度转换华氏温度实现代码内容,有需要的朋友们可以测试下。
    2020-12-12
  • 举例详解Python中的split()函数的使用方法

    举例详解Python中的split()函数的使用方法

    这篇文章主要介绍了举例详解Python中的split()函数的使用方法,split()函数的使用是Python学习当中的基础知识,通常用于将字符串切片并转换为列表,需要的朋友可以参考下
    2015-04-04
  • Python如何通过内存管理提升程序执行效率

    Python如何通过内存管理提升程序执行效率

    Python提供了自动内存管理的功能,但是如果不小心使用,可能会导致内存泄漏和性能问题,所以巧妙使用内存管理是提高Python执行效率的关键,下面就来和大家仔细讲讲Python的内存管理技巧吧
    2023-06-06
  • Python学习工具jupyter notebook安装及用法解析

    Python学习工具jupyter notebook安装及用法解析

    这篇文章主要介绍了Python学习工具jupyter notebook安装及用法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-10-10
  • Python装饰器使用方法全面梳理

    Python装饰器使用方法全面梳理

    这篇文章主要介绍了Python @property装饰器的用法,在Python中,可以通过@property装饰器将一个方法转换为属性,从而实现用于计算的属性,下面文章围绕主题展开更多相关详情,感兴趣的小伙伴可以参考一下
    2023-01-01
  • Python实现火柴人的设计与实现

    Python实现火柴人的设计与实现

    火柴人(Stick Figure)是一种极简风格的图形,通常由简单的线段和圆圈组成,却能生动地表达人物的姿态和动作,本文旨在介绍如何使用Python实现火柴人的设计与绘制,通过编程的方式,让读者了解火柴人背后的基本原理和实现方法,需要的朋友可以参考下
    2024-10-10

最新评论