最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

python中的生成器yield

来源:动视网 责编:小采 时间:2020-11-27 14:26:59
文档

python中的生成器yield

python中的生成器yield:生成器yield:使用yield语句 可以让函数生成一个结果序列而不仅仅是一个值def countdow(n): print("Start!"); while n>0: yield n; n -= 1; c = countdow(5); print(c.__next__()) print(c.__nex
推荐度:
导读python中的生成器yield:生成器yield:使用yield语句 可以让函数生成一个结果序列而不仅仅是一个值def countdow(n): print("Start!"); while n>0: yield n; n -= 1; c = countdow(5); print(c.__next__()) print(c.__nex


生成器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

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

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

python中的生成器yield:生成器yield:使用yield语句 可以让函数生成一个结果序列而不仅仅是一个值def countdow(n): print("Start!"); while n>0: yield n; n -= 1; c = countdow(5); print(c.__next__()) print(c.__nex
推荐度:
标签: 中的 生成器 python
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top