码迷,mamicode.com
首页 > 其他好文 > 详细

10-4 生成器

时间:2018-10-04 17:27:04      阅读:164      评论:0      收藏:0      [点我收藏+]

标签:计数   filename   iter   %s   odi   return   lin   rip   ***   

生成器

  即自己写的函数

简单的生成器函数

  只要包括__next__()函数和_iter__()的就是生成器

def genetator():
    print(1)
    return ‘a‘
ret = genetator()
print(ret)

结果:
1
a
只要含有yeild关键字的函数都是生成器函数,且与return不能共用,且需要写在函数内部
def genetator():
    print(1)
    yield ‘a‘
# 生成器函数:执行之后会得到一个生成作为返回值
ret = genetator()
print(ret)#结果:<generator object genetator at 0x0225DCC0>
print(ret.__next__())
# 结果:
# 1
# a
ret.__iter__()

 

def wahaha():
    for i in range(20):
        yield ‘娃哈哈%s‘%i
g=wahaha()
#只拿前五个,用count计数
count = 0
for k in g:
    count += 1
    print(k)
    if count > 5:
        break

#随时可以再拿下一个值
print(‘ooooo‘,g.__next__())
每生成一个生成器,都互不相关,各个执行

 

监听文件输入的例子(生成器)

# 监听文件的输入
def tail(filename):
    f = open(filename,encoding=‘utf-8‘)
    while True:
        line = f.readline()
        if line.strip():
            print(‘***‘,line.strip())
tail(‘info‘)
#监听文件的输入,并对内容进行过滤
def tail(filename):
    f = open(filename,encoding=‘utf-8‘)
    while True:
        line = f.readline()
        if line.strip():
            yield line.strip()
g = tail(‘info‘)
for i in g:
    if ‘python‘ in i:
        print(‘******‘,i,‘~~~~‘)
    if ‘www‘ in i:
        print(‘******‘,i,‘!!!!‘)

  

10-4 生成器

标签:计数   filename   iter   %s   odi   return   lin   rip   ***   

原文地址:https://www.cnblogs.com/Cheryol/p/9742552.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!