學(xué)習(xí)Python,就要先學(xué)習(xí)語法,yield以及生成器和迭代器就是Python十大語法之一。下文,是對yield以及生成器和迭代器的詳細(xì)介紹,一起了解一下!

Yield是外來詞匯,要想了解yield,就要先了解generator(生成器)。要了解generator,得先知道 iterator(迭代器)。

py2時(shí)代,range()返回的是list,但如果range(10000000)的話,會消耗大量內(nèi)存資源,所以,py2又搞了一個(gè)xrange()來解決這個(gè)問題。py3則只保留了xrange(),但寫作range()。xrange()返回的就是一個(gè)迭代器,它可以像list那樣被遍歷,但又不占用多少內(nèi)存。generator(生成器)是一種特殊的迭代器,只能被遍歷一次,遍歷結(jié)束,就自動消失了??傊?,不管是迭代器還是生成器,都是為了避免使用list,從而節(jié)省內(nèi)存。那么,如何得到迭代器和生成器呢?pyrhon內(nèi)置了迭代函數(shù) iter,用于生成迭代器,用法如下:

yield以及生成器和迭代器

yield 則是用于構(gòu)造生成器的。比如,我們要寫一個(gè)函數(shù),返回從0到某正整數(shù)的所有整數(shù)的平方,傳統(tǒng)的代碼寫法是這樣的:

yield以及生成器和迭代器

但是如果計(jì)算1億以內(nèi)的所有整數(shù)的平方,這個(gè)函數(shù)的內(nèi)存開銷會大,這是 yield 就可以大顯身手了:

yield以及生成器和迭代器

如果再次遍歷,則不會有輸出了。

融躍Python金融實(shí)戰(zhàn)課

看完上述的介紹,是不是對yield以及生成器和迭代器有所了解了。如果你想學(xué)習(xí)Python,就選擇融躍Python金融實(shí)戰(zhàn)課吧,該課程利用Python語言的智能性、簡潔性、高效性與金融的專業(yè)實(shí)戰(zhàn)相結(jié)合,使學(xué)習(xí)該語言的學(xué)員,具備語言匯編能力,將錯(cuò)綜復(fù)雜的金融數(shù)據(jù)進(jìn)行模塊化梳理,進(jìn)而建立科學(xué)的金融模型,協(xié)助做出的投資決策,旨在幫助金融從業(yè)人員增強(qiáng)行業(yè)競爭力。