首页 > 代码库 > 生成器的运用
生成器的运用
定义:
函数体内包含有yield关键字,该函数执行的结果是生成器
一个标准,generator代表类型是迭代
yield和return相似但是一个函数内可以有多个yield而函数中出现了多个return也只会对第一个return有效果
yield的功能:
1. 与return类似,都可以返回值,不一样在于,yield可以使用多个,return到了就停止
2.为封装好的的函数能够使用__iter__和__next__方法,
3.遵循迭代器的取值方式obj.__next__(),触发函数的执行和函数的保存都是通过yeild保存的
几个用法
tail -f a.txt | grup ‘error‘
我们再做一个类似的 内容
tail -f a.txt | grup ‘error‘| grep ‘404‘
这个内容的代码
import time def tail(file,encodin=‘utf-8‘): with open(file,encoding=encodin) as f: f.seek(0,2) while True: line=f.readline() if line: yield line else: time.sleep(0.5) def grep(lines,pattern): for line in lines : if pattern in line: yield line g=tail(‘a.txt‘) g1=grep(g,‘hehehe‘) g2=grep(g1,‘404‘) for i in g2: print(i)
这一段代码其实就是grep代码中的yield line 是由 print line
生成器的运用
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。