#!/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# 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)
生成器詳解
什麼是生成器 生成器是一種特殊的迭代器,生成器實現了迭代器協議 iter next 生成器解決什麼問題 如果有一億的資料要我們處理,我們通過列表的方式來訪問的話,這一億的資料是存放在記憶體的,這樣會非常的消耗記憶體的,但是如果我們使用生成器的話,每當處理乙個資料的時候,記憶體中只是相當於存了乙個資料...
python 生成器作用 Python生成器
生成器介紹 在函式內部包含yield關鍵字,那麼該函式執行的結果是生成器,生成器就是迭代器。生成器的功能 把函式結果做成迭代器 以一種優雅的方式封裝好iter,next 提供了一種自己定義迭代器的方式。使用生成器建立乙個迭代器 def a print a yield 11 使用yield,執行後返回...
python生成器好處 Python生成器筆記
python中三大器有迭代器,生成器,裝飾器,本文主要講述生成器。主要從生成器的概念,本質,以及yield關鍵字的使用執行過程。本質 生成器是一類特殊的迭代器,使用了yield關鍵字的函式不再是函式,而是生成器。使用了yield的函式就是生成器 1.yield關鍵字有兩點作用 1.1 yield語句...