Python yield生成器和return對(duì)比代碼實(shí)例
迭代是Python最強(qiáng)大的功能之一,是訪問(wèn)集合元素的一種方式。
迭代器是一個(gè)可以記住遍歷的位置的對(duì)象。
迭代器對(duì)象從集合的第一個(gè)元素開(kāi)始訪問(wèn),直到所有的元素被訪問(wèn)完結(jié)束。迭代器只能往前不會(huì)后退。
迭代器有兩個(gè)基本的方法:iter() 和 next()。
生成器是特殊的迭代器
def gen_yield(): for i in range(1,10): for j in range(1,10): yield i+j # return i+jif __name__ == ’__main__’: aa = gen_yield() print(aa.__next__()) print(aa.__next__()) print(aa.__next__()) print(aa.__next__()) print(aa.__next__()) print(aa.__next__())
yield和return都有返回值的作用,但不同的是,yield會(huì)記住當(dāng)前迭代的位置,而return不會(huì)
如果還是不能很好的理解上面兩者的區(qū)別,看如下代碼
def test_yield(): for i in [1,2,3]: yield idef test_return(): for i in [1,2,4]: return iif __name__ == ’__main__’: test_yield_obj = test_yield() print(’這里測(cè)試yield’) print(test_yield_obj.__next__()) # 1 print(test_yield_obj.__next__()) # 2 print(test_yield_obj.__next__()) # 3 print(’這里是測(cè)試return’) print(test_return()) # 1 print(test_return()) # 1 print(test_return()) # 1
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持好吧啦網(wǎng)。
相關(guān)文章:
1. CSS Hack大全-教你如何區(qū)分出IE6-IE10、FireFox、Chrome、Opera2. CSS hack用法案例詳解3. 讀大數(shù)據(jù)量的XML文件的讀取問(wèn)題4. HTML DOM setInterval和clearInterval方法案例詳解5. XML入門的常見(jiàn)問(wèn)題(一)6. html小技巧之td,div標(biāo)簽里內(nèi)容不換行7. 詳解盒子端CSS動(dòng)畫性能提升8. 詳解瀏覽器的緩存機(jī)制9. 告別AJAX實(shí)現(xiàn)無(wú)刷新提交表單10. msxml3.dll 錯(cuò)誤 800c0019 系統(tǒng)錯(cuò)誤:-2146697191解決方法
