1 什麼是生成器?
在函式內但凡出現yield關鍵字,再呼叫函式就不會執行函式體**,會返回值乙個值,該值稱之為生成器
生成器本質就是迭代器
2、為什麼要有生成器?
生成器是一種自定義迭代器的方式
3、如何用生成器
必須在函式內呼叫yeild才能拿到生成器,生成器本質上就是迭代器
def func():
print('first1')
print('first2')
print('first3')
yield 1 #暫停
print('second1')
print('second2')
print('second3')
yield 2 #暫停
print('third')
yield 3 #暫停
print('fourth')
g=func() #經過yeild後得到乙個迭代器(生成器)
print(g) #生成器物件的記憶體位址
print(g.__iter__().__iter__().__iter__() is g) #true g迭代之後仍是自身,說明生成器本身就是迭代器
res1=next(g) #first1 將第乙個yeild後面的返回值賦值給res1
#first2
#first3
print('第一次的返回值:',res1)
print('='*100)
res2=next(g)
print('第二次的返回值:',res2)
print('='*100)
res3=next(g)
print('第三次的返回值:',res3)
print('='*100)
res4=next(g)
print('第三次的返回值:',res4)
for item in g: #g=iter(g) #item=next(g)
print(item)
i=range(1,1000)
for item in range(1,100000000):
print(item)
def my_range(start,stop,step=1):
while start < stop:
yield start # 暫停
start+=step
g=my_range(1,5,2) #1 3
print(next(g))
print(next(g))
print(next(g))
print(next(g))
print(next(g))
print(next(g))
print(next(g))
for item in g:
print(item)
總結yield的功能
1、提供一種自定義迭代器的方式
2、yield可以暫停住函式,返回值
yield vs return
相同點:都是用在函式內,都可以返回值,沒有型別限制,沒有個數限制
不同點:return只能返回一次值,yield可以返回多次值
了解知識
yield 值
x=yield
x= yield 值
初識python迭代和生成器
接觸python迭代器,生成器後,查閱資料整理了一些知識點,寫了一些自己的感悟,如有錯誤希望及時指正。list 1,2,3 for i in mylist print i result 12 3from collections import iterable print isinstance 1,2...
python初識生成器 迭代器
生成器 帶有 yield 的函式在 python 中被稱之為 generator 生成器 def xragns 定義函式生成器 print 小伙 yield 好 加上yield就會生成乙個生成器 print python yield hao print 程式設計 yield hao x xragns...
python 生成器作用 Python生成器
生成器介紹 在函式內部包含yield關鍵字,那麼該函式執行的結果是生成器,生成器就是迭代器。生成器的功能 把函式結果做成迭代器 以一種優雅的方式封裝好iter,next 提供了一種自己定義迭代器的方式。使用生成器建立乙個迭代器 def a print a yield 11 使用yield,執行後返回...