#!/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 time
def 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 i
g = grep('python',tail('a.txt'))
for i in g:
print(i)
python生成器详解
最新推荐文章于 2024-06-09 14:00:00 发布