python-yield-生成器--的做用

http://www.python.org/dev/peps/pep-0255/python

編譯器 中最初級的模塊是進行詞法分析, 將源代碼 轉化成 token流。函數

能夠 一次性將全部 字符轉換成token list , 以後再處理;線程

也能夠每次獲取一個 token, 處理以後, 接着再獲取下一個token, 即邊分析邊處理, 這就須要token函數 記錄 當前分析的 狀態, 一種是將狀態 由外部調用者 傳入, 一種是 函數內部本身來記錄這個狀態。調試

也能夠使用線程之間通訊的方式來處理,將token生產函數 和 token讀取函數放到兩個線程中。對象

這一切本質都是爲了讓代碼更好看。token

 

而yield 就是另一種方式, 每次重入函數的時候, 都將從上次結束的地方 繼續開始處理, 這個對象被稱爲 generator 生成器。get

def fib():generator

    a, b = 0, 1編譯器

    while True:編譯

             yield b

             a, b = b, a+b

調用函數執行到yield的時候 將會 返回一個生成器, 接着調用生成器的 next() 將會 執行直到再次執行到yield 這裏 並將 b 的值返回, 有點相似於 斷點調試程序, 查看程序的內部變量的狀態。

相關文章
相關標籤/搜索