生成器函数简单理解,函数里面有 yield 就是生成器函数
生成器函数在python编译时就产生了,而且其其实属于生成器对象
生成器里面的值都是遍历的,也满足迭代器协议
def gen_fun():
yield 1
yield 2
gen_obj = gen_fun()
for data in gen_obj
print(data)
# 结果是
# 1
# 2
生成器的一个使用样例
读取大文本文件
read()函数是可以按照字节数来进行读取的,例如read(4096)就是读取4096个字符
def read_txt(f,new_line):
'''
f:文件对象
new_line:分隔符
'''
buffer = ""
while True:
while new_line in buffer:
new_line_index = buffer.index(new_line) # 记录分割的位置
yield buffer[:new_line_index] # 按分割符生成数据
buffer = buffer[new_line_index + len(new_line_index):] # 拼接分隔符后的数据
chunk = f.read(4096)
if not chunk:
yield buffer
break
buffer += chunk
with open(r'./data_txt',mode='r') as f:
for line in read_txt(f,'***'):
print(line)