Python生成器的推導式
阿新 • • 發佈:2022-04-10
普通函式採用return返回值
def func(): print("111") return 222 #return返回一個值
ret =func() print(ret)
結果:
111
222
將函式中的return換成yield就是生成器
def func(): print("111") yield 222 # 整個函式是一個生成器 ret =func() print(ret)
結果:
<generator object func at 0x0000024277AB44A0>
通過執行_next_()來執行以下生成器
def func():print("111") yield 222 # 整個函式是一個生成器 mygenerator=func() print(mygenerator.__next__())
結果:
111
222
yield是分段來執行一個函式,而return是直接停止執行函式
def func(): print("111") yield 222 print("333") yield 444 mygenerator=func() ret=mygenerator.__next__() print(ret) ret=mygenerator.__next__() print(ret) ret=mygenerator.__next__() #最後一個yield執行完畢,再次__next__()程式會報錯 print(ret)
生成器可以使用for迴圈來迴圈獲取內部的元素:
def func(): print(111) yield 222 print(333) yield 444 print(555) yield 666 gen=func() for i in gen: print(i)
結果:
111 222 333 444 555 666
生成器表示式(生成器推導式)
>>> gen =(i fori in range(10)) >>> type(gen) <class 'generator'> >>> gen.__next__() 0 >>> gen.__next__() 1 >>> gen.__next__() 2 >>> gen.__next__() 3
生成器的特點:
惰性機制,生成器並不立即產生全部元素,僅在用到元素的時候才生成(只能向前),可以極大節省記憶體。
https://www.cnblogs.com/mlhz/p/9469124.html