亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

淺析Python中yield關鍵詞的作用與用法

 更新時間:2016年11月29日 11:36:30   作者:標點符  
Python中關鍵字yield的作用是什么?用來干什么的?這篇文章就給大家詳細介紹了Python中yield關鍵詞的作用與用法,文中通過示例代碼介紹的很詳細,對大家學習python具有一定的參考借鑒價值,有需要的朋友們下面來一起學習學習吧。

前言

為了理解yield是什么,首先要明白生成器(generator)是什么,在講生成器之前先說說迭代器(iterator),當創(chuàng)建一個列表(list)時,你可以逐個的讀取每一項,這就叫做迭代(iteration)。

>>> mylist = [1, 2, 3]
>>> for i in mylist :
... print(i)
1
2
3

mylist 是一個可迭代的對象。當使用一個列表生成式來建立一個列表的時候,就建立了一個可迭代的對象:

>>> mylist = [x*x for x in range(3)]
>>> for i in mylist :
... print(i)
0
1
4

可以使用“for··· in ··· ”來操作可迭代對象,如:list,string,files,這些迭代對象非常方便我們使用,因為你可以按照你的意愿進行重復的讀取。但是你不得不預先存儲所有的元素在內存中,那些對象里有很多元素時,并不是每一項都對你有用。

生成器同樣是可迭代對象,但是你只能讀取一次,因為它并沒有把所有值存放內存中,它動態(tài)的生成值:

>>> mygenerator = (x*x for x in range(3))
>>> for i in mygenerator :
... print(i)
0
1
4

看起來除了把 [] 換成 () 外沒什么不同。但是,你不可以再次使用 for i in mygenerator , 因為生成器只能被迭代一次:先計算出0,然后繼續(xù)計算1,然后計算4,一個跟一個…

yield 是一個類似 return 的關鍵字,只是這個函數返回的是個生成器。

>>> 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

這個示例本身沒什么意義,但是它很清晰地說明函數將返回一組僅能讀一次的值,要想掌握yield,首先必須理解的是:當你調用生成器函數的時候,如上例中的createGenerator() ,程序并不會執(zhí)行函數體內的代碼,它僅僅只是返回生成器對象,這種方式頗為微妙。函數體內的代碼只有直到每次循環(huán)迭代(for)生成器的時候才會運行。

第一次迭代中你的函數會執(zhí)行,從開始到達 yield 關鍵字,然后返回 yield 后的值作為第一次迭代的返回值. 然后,每次執(zhí)行這個函數都會繼續(xù)執(zhí)行你在函數內部定義的那個循環(huán)的下一次,再返回那個值,直到沒有可以返回的。

如果生成器內部沒有定義 yield 關鍵字,那么這個生成器被認為成空的。這種情況可能因為是循環(huán)進行沒了,或者是沒有滿足 if/else 條件。

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家學習或者使用python能有所幫助,如果有疑問大家可以留言交流。

相關文章

  • Python中的map()函數和reduce()函數的用法

    Python中的map()函數和reduce()函數的用法

    這篇文章主要介紹了Python中的map()函數和reduce()函數的用法,代碼基于Python2.x版本,需要的朋友可以參考下
    2015-04-04
  • Matplotlib實戰(zhàn)之柱狀圖繪制詳解

    Matplotlib實戰(zhàn)之柱狀圖繪制詳解

    柱狀圖,是一種使用矩形條,對不同類別進行數值比較的統(tǒng)計圖表,這篇文章主要為大家詳細介紹了如何使用Matplotlib繪制柱狀圖,需要的可以參考下
    2023-08-08
  • Python可視化函數plt.scatter詳解

    Python可視化函數plt.scatter詳解

    這篇文章主要介紹了Python可視化函數plt.scatter詳解,?關于matplotlib的scatter函數有許多活動參數,如果不專門注解,是無法掌握精髓的,本文專門針對scatter的參數和調用說起,并配有若干案例,需要的朋友可以參考下
    2023-04-04
  • MoviePy簡介及Python視頻剪輯自動化

    MoviePy簡介及Python視頻剪輯自動化

    MoviePy是一個用于視頻編輯的Python模塊,可用于基本操作(如剪切、拼接、字幕插入)、視頻合成、視頻處理或創(chuàng)建高級效果等。本文給大家介紹MoviePy簡介及Python視頻剪輯自動化的相關知識,感興趣的朋友一起看看吧
    2020-12-12
  • Python實現圖書借閱管理系統(tǒng)

    Python實現圖書借閱管理系統(tǒng)

    這篇文章主要為大家詳細介紹了Python實現圖書借閱管理系統(tǒng),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • Python寫入數據到MP3文件中的方法

    Python寫入數據到MP3文件中的方法

    這篇文章主要介紹了Python寫入數據到MP3文件中的方法,可實現將MP3文件相關信息寫入MP3文件的功能,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-07-07
  • pandas dataframe保留重復行的方法

    pandas dataframe保留重復行的方法

    如何保留Pandas DataFrame中的重復行,可以使用duplicated()方法和布爾索引,具有一定的參考價值,感興趣的可以了解一下
    2023-11-11
  • Python多進程并發(fā)與多線程并發(fā)編程實例總結

    Python多進程并發(fā)與多線程并發(fā)編程實例總結

    這篇文章主要介紹了Python多進程并發(fā)與多線程并發(fā)編程,結合實例形式總結分析了Python編程中的多進程并發(fā)與多線程并發(fā)相關概念、使用方法與操作注意事項,需要的朋友可以參考下
    2018-02-02
  • 簡單了解python中的與或非運算

    簡單了解python中的與或非運算

    這篇文章主要介紹了簡單了解python中的與或非運算,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-09-09
  • 深入理解NumPy簡明教程---數組3(組合)

    深入理解NumPy簡明教程---數組3(組合)

    本篇文章對NumPy數組進行較深入的探討。首先介紹自定義類型的數組,接著數組的組合,最后介紹數組復制方面的問題,有興趣的可以了解一下。
    2016-12-12

最新評論