初識生成器

2021-08-20 17:33:38 字數 1656 閱讀 4547

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,執行後返回...