1. 程式人生 > >python中的yield使用

python中的yield使用

關於python中yield的使用,以前學習時有大概理解yield是怎麼用,用文件做了筆記,但後面再看到yield時發現關於yield的理解和用法都忘記的差不多了,以前的筆記文件也沒有找到,所以這裡記錄下關於yield的使用。

參考文章: 這裡

yield的使用

yield是用在函式中的,帶有yield的函式不再是一個普通函式,而是一個生成器(generator),可以用於迭代,它不像 列表 那些迭代物件,迭代時陣列中所有的資料都在記憶體中,如果陣列中有海量資料那麼迭代的將非常耗記憶體。生成器就不一樣,可以只讀取它一次,在用它的時候才生成。

yield 是一個類似於return 的關鍵字,迭代一次遇到yield 時就返回 yield後面的值。 在下一次迭代時, 從上一次 迭代遇到的yield後面的程式碼開始執行,簡單的說: yield就是 return 返回一個值,並且記住這個返回的位置,下次迭代就從這個位置後(下一行)開始。

下面我們通過一個斐波拉契數列的案列來看下關於yield的使用:

def fab(max):
    n, a, b = 0, 0, 1
    while n < max:
        # 執行到此處就會返回b的值,下次執行從a, b = b, a + b 這句程式碼開始
        yield b
        a, b = b, a + b
        n = n + 1


c = fab(10)
for i in fab(64):
    print(i)

基本通過這個案例就可以知道yield是怎麼使用的了,這裡如果你對yield的流程還是不怎麼理解,你可以通過pycharm的Debug除錯來看yield的執行。或者看下上面的那個參考文章連結