Python中yield解析
阿新 • • 發佈:2018-12-13
turn font body creat create ret sed list 特點 。
小探yield
查看 python yield 文檔
yield expressions:
Using a yield expression in a function’s body causes that function to be a generator
can only be used in the body of a function definition
翻譯成人話就是:
使用yield表達式會將函數體變成生成器,而且只能在函數定義的主體中使用。
叠代對象
我一般使用的 for * in array(list, string,file) 。這些都是可叠代對象
這樣的方法 所有的數據都在內存中,如果數據量特別大的時候,會消耗大量的內存
就像在python2常使用 for i in xrange(num) 來代替 for i in range(num)
yield類似於return關鍵字,yield函數會生成一個generator。
- 特點:叠代一次遇到yield時返回yield後面(右邊)的值,下一次叠代時,從上一次叠代遇到的yield後面的代碼(下一行)開始執行。
生成器generator也是可以進行叠代,但是只能讀取一次,它並不把所有的值都放在內存中,實時地生成數據。
使用方法是重復調用next()方法,直至catch一個異常error
yield運行
一個實例
>>> def createGenerator() : ... mylist = range(3) ... for i in mylist : ... yield i*i ... >>> mygenerator = createGenerator() # create a generator >>> print(mygenerator) # mygenerator is an object! <generator object createGenerator at 0xb7555c34> >>> for i in mygenerator: ... print(i) 0 1 4
當你調用這個函數的時候,函數內部的代碼並不是立即執行。函數只返回一個生成器對象。當使用for進行叠代的時候,函數內部的代碼執行。
python yield 參考鏈接
Python中yield解析