關於Python中的yield

關於Python中的yield

http://www.cnblogs.com/tqsummer/archive/2010/12/27/1917927.htmlhtml

 http://www.ibm.com/developerworks/cn/opensource/os-cn-python-yield/python

 

1、迭代器(iterator)函數

在Python中,for循環能夠用於Python中的任何類型,包括列表、元祖等等,實際上,for循環可用於任何「可迭代對象」,這其實就是迭代器工具

迭代器是一個實現了迭代器協議的對象,Python中的迭代器協議就是有next方法的對象會前進到下一結果,而在一系列結果的末尾是,則會引起StopIteration。任何這類的對象在Python中均可以用for循環或其餘遍歷工具迭代,迭代工具內部會在每次迭代時調用next方法,而且捕捉StopIteration異常來肯定什麼時候離開。htm

 

2、生成器(constructor)對象

生成器函數在Python中與迭代器協議的概念聯繫在一塊兒。簡而言之,包含yield語句的函數會被特意編譯成生成器。當函數被調用時,他們返回一個生成器對象,這個對象支持迭代器接口。函數也許會有個return語句,但它的做用是用來yield產生值的。blog

不像通常的函數會生成值後退出,生成器函數在生成值後會自動掛起並暫停他們的執行和狀態,他的本地變量將保存狀態信息,這些信息在函數恢復時將再度有效接口

相關文章
相關標籤/搜索