生成器函式與函式的區別

2021-09-24 19:38:48 字數 407 閱讀 6025

生成器函式嚴格意義來說只是一種形式象函式但世界為生成器的特殊型別,二者相同點如下:

1、二者的定義格式相同,都是使用def語句;

2、二者都可以有return語句,也可以沒有;

3、二者的函式體格式相同。

差異點如下:

1、生成器函式中主要使用yield返回資料,而函式主要使用return返回資料;

2、二者返回值不同,函式可以根據需要返回任何型別,生成器函式執行返回的是乙個生成器;

3、函式除非遞迴呼叫,一般呼叫一次就執行一次完整邏輯,而生成器函式呼叫只是執行生成器的定義,返回乙個生成器的型別,函式體內的**並沒有全部執行;

4、函式執行一次執行完整,生成器可以通過和外部的互動進行多次迴圈返回資料。

具體關於生成器的知識請參考《神秘而強大的python生成器精講》

函式與生成器

一 函式屬性 函式可以在內部建立預設的屬性,還可以在外部通過句點屬性識別符號來動態建立該函式的屬性。def foo foo properly created doc string def bar pass foo.doc foo properly created doc string bar.doc...

函式與生成器

一 函式 1.1 函式的關鍵字 def 定義函式 return 返回值 pass 佔位 exit 1 直接退出並返回1 1.2 高階函式 高階函式都是可以通過 邏輯實現,但是自己寫的函式的複雜程度或者演算法不一定有人家內建的好 map高階函式 def f x return x x print map...

生成器函式

pyhon優雅的魔力使生成器函式很特殊,它們像定格相機一樣工作。當乙個標準函式遇到return語句時,它會返回值,然後函式會丟棄內部的所有資料。當下次呼叫時,一切從頭開始。yield語句會做不同的事情。它像return一樣返回乙個值,但是它不會使函式丟棄資料,相反所有資料都被儲存起來。usr bin...