python生成器详解

来源:互联网 发布:淘宝直通车打击同行 编辑:程序博客网 时间:2024/05/22 12:53
#!/usr/bin/python# -*- coding utf8 -*-#生成器函数 只要函数体包含yield关键字 name该函数就是生成器函数# def foo():#     print('first')#     yield 1#     print('second')#     yield 2#     print('third')#     yield 3# g=foo()# print(g)#print(next(g))#print(next(g))#yield 函数变成迭代器  不再执行  next触发执行'''yield的功能:    1.相当于为函数封装好__iter__和__next__    2.return只能返回一次值,函数就终止了,    而yield能返回多次值,每次返回都会将函数暂停,下一次next会从    上一次暂停的位置继续执行'''# def counter(n):#     print('start')#     i=0#     while i<n:#         print(i)#         yield i#         i +=1#     print('end')# g=counter(5)# print(next(g))# print(next(g))# print(next(g))# print(next(g))# print(next(g))# print(next(g))# print(next(g))##tail -f 示例import timedef tail(filepath):    with open(filepath,encoding='utf-8') as f:        f.seek(0,2)        while True:            line=f.readline().strip()            if line:                yield line            else:                time.sleep(0.2)# t=tail('a.txt')# print(next(t))#for line in t:#    print(line)def grep(pattern,lines):    for i in lines:        if pattern in i:            yield ig = grep('python',tail('a.txt'))for i in g:    print(i)

原创粉丝点击