生成器函式

2021-08-01 03:02:45 字數 806 閱讀 4139

pyhon優雅的魔力使生成器函式很特殊,它們像定格相機一樣工作。

當乙個標準函式遇到return語句時,它會返回值,然後函式會丟棄內部的所有資料。當下次呼叫時,一切從頭開始。

yield語句會做不同的事情。它像return一樣返回乙個值,但是它不會使函式丟棄資料,相反所有資料都被儲存起來。

#/usr/bin/python3

2 #coding:utf-8

3 4 #生成器函式 yield

5 def odds(start = 1):

6 '''return all odd numbers from start updates'''

7 if int(start) % 2 == 0:

8 start = int(start) + 1

9 while true:

10 yield start

11 start += 2

12 13 if __name__ == "__main__":

14 lis = [m*m for m in range(1,13) if not m*m %2] #生成器表示式

15 print(lis)

16 17 for n in odds():

18 if n > 7:

19 break

20 else:

21 print(n)

22

python生成器函式 Python 生成器函式

一 生成器 生成器指的是生成器物件,可由生成器表示式得到,也可使用 yield 關鍵字得到乙個生成器函式,呼叫這個函式得到乙個生成器物件 生成器物件,是乙個可迭代物件,是乙個迭代器 生成器物件,是延遲計算 惰性求值的 1.1 生成器函式 函式體重包含 yield 語句的函式,就是生成器函式,呼叫後返...

生成器函式

什麼是生成器 生成器是能夠動態提供資料的物件,生成器物件也是可迭代物件 例項 生成器有兩種 生成器函式 生成器表示式 生成器函式的呼叫將返回乙個生成器的物件,生成器物件是乙個可迭代物件 defmyyield 此函式為生成器函式 yield 2yield 3yield 5yield 7 此時生成乙個生...

生成器函式

生成器 是可以迭代的,但是你只可以讀取它一次,因為它並不把所有的值放在記憶體中,它是實時地生成資料 mygenerator x x for x in range 3 for i in mygenerator print i 01 4你不可以再次使用for i in mygenerator,因為生成器...