python生成器詳解

2021-08-01 19:21:19 字數 1456 閱讀 4454

#!/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語句...