python生成器yield_python 生成器yield的总结
(1):通常的for..in...循環中,in后面是一個數組,這個數組就是一個可迭代對象,類似的還有鏈表,字符串,文件。他可以是a = [1,2,3],也可以是a = [x*x for x in range(3)]。
它的缺點也很明顯,就是所有數據都在內存里面,如果有海量的數據,將會非常耗內存。
(2)生成器是可以迭代的,但是只可以讀取它一次。因為用的時候才生成,比如a = (x*x for x in range(3))。!!!!注意這里是小括號而不是方括號。
(3)生成器(generator)能夠迭代的關鍵是他有next()方法,工作原理就是通過重復調用next()方法,直到捕獲一個異常。
(4)帶有yield的函數不再是一個普通的函數,而是一個生成器generator,可用于迭代
(5)yield是一個類似return 的關鍵字,迭代一次遇到yield的時候就返回yield后面或者右面的值。而且下一次迭代的時候,從上一次迭代遇到的yield后面的代碼開始執行
(6)yield就是return返回的一個值,并且記住這個返回的位置。下一次迭代就從這個位置開始。
(7)帶有yield的函數不僅僅是只用于for循環,而且可用于某個函數的參數,只要這個函數的參數也允許迭代參數。
(8)send()和next()的區別就在于send可傳遞參數給yield表達式,這時候傳遞的參數就會作為yield表達式的值,而yield的參數是返回給調用者的值,也就是說send可以強行修改上一個yield表達式值。
(9)send()和next()都有返回值,他們的返回值是當前迭代遇到的yield的時候,yield后面表達式的值,其實就是當前迭代yield后面的參數。
(10)第一次調用時候必須先next()或send(),否則會報錯,send后之所以為None是因為這時候沒有上一個yield,所以也可以認為next()等同于send(None)
總結
以上是生活随笔為你收集整理的python生成器yield_python 生成器yield的总结的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 中if判断中文_当Excel表格中的条件
- 下一篇: 血栓清道夫机器人_血栓“清道夫”找到了!