python中的生成器yield

黄舟
发布: 2017-01-19 17:21:09
原创
1827人浏览过

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

def  countdow(n):  
     print("Start!");  
     while n>0:  
          yield n;  
          n -= 1;  
c = countdow(5);  
print(c.__next__())   
print(c.__next__())
登录后复制

输出结果:

Start!
5
4
登录后复制

__next__()方法使生成器函数一直运行到下一条yield语句为止,此时__next__()方法将返回值传递给了yield并且函数暂时中止执行 
再次调用__next__()时 函数继续执行 此过程持续到生成器函数返回结束为止
通常不会手动调用__next__()方法 
而是使用循环

for i in  countdow(5):  
 print(i);
登录后复制

输出结果:

5
4
3
2
1
登录后复制

生成器是基于处理管道、流或数据流编写程序的一种强大的方式;
如:

uBrand Logo生成器
uBrand Logo生成器

uBrand Logo生成器是一款强大的AI智能LOGO设计工具。

uBrand Logo生成器 57
查看详情 uBrand Logo生成器

立即学习Python免费学习笔记(深入)”;

def tail(f):    
 for line in f:    
  if not line : #如果 非真 则暂时休眠并且再次尝试  
   time.sleep(0.1);  
   continue;  
  yield line; # 将获取到的文件中的值 生成一个序列的值  
filecount = tail(open('E:/work.txt'));  
  
#grep方法 用于在上面方法生成器中查找特定的子字符串    
def grep(lines,searchtext):  
 for line in lines:  
  if searchtext in line :  
   yield  line;  
lines  = grep(filecount,'tom');  #查找带有tom 的子字符串  
for line in lines:   
 print(line);
登录后复制

输出结果:
'tom',120,132
总结:
生成器的作用:当程序运行到yield时 将运行的值 
传递给了yield 程序不会输出 可认为在此时程序处于暂停的状态 当使用__next__()方法的时候 函数继续执行 
直至再次遇到yield 

优点:yield存储的并不是单一的值,而是保存当前的程序执行状态 不用一次计算所有的元素 而是用一次算一次 节省内存空间

以上就是python中的生成器yield的内容,更多相关内容请关注PHP中文网(www.php.cn)!

相关标签:
python速学教程(入门到精通)
python速学教程(入门到精通)

python怎么学习?python怎么入门?python在哪学?python怎么学才快?不用担心,这里为大家提供了python速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号