2016-02-25 32 views
0

我寫了一段Python代碼片段。Python生成器 - 什麼都不產生或跳到下一個?

def all_but(n): 
    for i in range(10): 
     if i != n: 
      yield i 

>>> list(all_but(5)) 
[0, 1, 2, 3, 4, 6, 7, 8, 9] 

那麼,輸出是我的預期。但是我並不完全理解當i = 5時會發生什麼。發電機沒有產生什麼,或者它跳到下一個產生6?

+4

它跳轉到循環的下一次迭代。在這個迭代中甚至不會碰到「yield」,因爲if條件導致錯誤。 –

+1

@YaroslavAdmin啊。所以發電機將產出直到達到產量。那麼,我覺得我正在談論一個明顯的事實。 – 8090PZ

+2

這是'if ='條件,當'n = 5'時跳過,所以當這種情況發生時,它會直接進入下一次迭代而不執行'yield i' –

回答

0

從評論總結,發電機輸出每當它擊中'收益'關鍵字