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

深入淺析Python中的yield關(guān)鍵字

 更新時間:2018年01月24日 10:57:23   作者:震靈  
python中有一個非常有用的語法叫做生成器,所利用到的關(guān)鍵字就是yield。接下來腳本之家小編給大家?guī)砹薖ython中的yield關(guān)鍵字詳細解析,感興趣的朋友參考下吧

前言

python中有一個非常有用的語法叫做生成器,所利用到的關(guān)鍵字就是yield。有效利用生成器這個工具可以有效地節(jié)約系統(tǒng)資源,避免不必要的內(nèi)存占用。

一段代碼

def fun():
for i in range(20):
 x=yield i
 print('good',x)
if __name__ == '__main__':
a=fun()
a.__next__()
x=a.send(5)
print(x)

這段代碼很短,但是詮釋了yield關(guān)鍵字的核心用法,即逐個生成。在這里獲取了兩個生成器產(chǎn)生的值,即0和1。分別由next函數(shù)和send()函數(shù)獲得,這兩個函數(shù)的區(qū)別我們后面會詳細闡述。

關(guān)于__next__函數(shù),這里先說明一下,我們可以利用__next__()這個函數(shù)持續(xù)獲取符合fun函數(shù)規(guī)則的數(shù),直到19結(jié)束。這段代碼如下所示:

def fun():
for i in range(20):
 x=yield i
if __name__ == '__main__':
for x in fun():
 print(x)

這段代碼的效果和下面這段代碼是完全相同的

if __name__ == '__main__':
for i in range(20):
 x=yield i

for..in調(diào)用生成器算是生成器的基礎(chǔ)用法,不過只會用for..in意義是不大的。生成器中最重要的函數(shù)是sent和__next__這兩個函數(shù),下面就針對這兩個函數(shù)進行詳細的闡述。

sent函數(shù)

這里特別強調(diào)了sent函數(shù),因為sent函數(shù)沒有那么直觀。__next__函數(shù)很好理解,就是從上一個終止點開始,到下一個yield結(jié)束,返回值就是yield表達式的值。

例如在初始的那段代碼里:

def fun():
for i in range(20):
 x=yield i
 print('good',x)

第一次調(diào)用__next__函數(shù)的時候,我們從fun的起點開始,然后在yield處結(jié)束,需要注意的是,賦值語句不會調(diào)用,此處yield i和含義和return差不多。

但是第二次調(diào)用__next__函數(shù)的時候,就會直接從上一個yield的結(jié)束處開始,也就是先執(zhí)行賦值語句,然后輸出字符串,進入下一個循環(huán),直到下一個yield或者生成器結(jié)束

再次看初始的那段代碼,可以發(fā)現(xiàn)第二次調(diào)用的時候沒有選擇使用__next__函數(shù),而是使用了一個sent()函數(shù)。這里就需要注意,sent()函數(shù)的用法和__next__函數(shù)不太一樣。sent()函數(shù)只能從yield之后開始,到下一個yield結(jié)束。這也就意味著第一次調(diào)用必須使用__next__函數(shù)。

sent()函數(shù)最重要的作用在于它可以給yield對應(yīng)的賦值語句賦值,比如上面那一段代碼中的

x=yield i

如果調(diào)用__next()__函數(shù),那么x=None。但是如果調(diào)用sent(5),那么x=5。除了上述將的兩個特征以外,sent和next并沒有什么區(qū)別,sent函數(shù)也會返回yield表達式對應(yīng)的值

next函數(shù)調(diào)用次可能有限

需要特別注意的是,盡管是生成器。但是next函數(shù)的調(diào)用次數(shù)可能是有限的。比如下面這段代碼

def fun():
for i in range(20):
 x=yield i
 print('good',x)
if __name__ == '__main__':
a=fun()
for i in range(30):
 x=a.__next__()
 print(x)

生成器里的函數(shù)只循環(huán)了20次,但是next函數(shù)卻調(diào)用了30次,這時候就會觸發(fā)StopIteration異常。

總結(jié)

以上所述是小編給大家介紹的Python中的yield關(guān)鍵字,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!

相關(guān)文章

  • 詳解Python中的type和object

    詳解Python中的type和object

    這篇文章主要介紹了Python中type和object的相關(guān)知識,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下
    2018-08-08
  • 關(guān)于初始種子自動選取的區(qū)域生長實例(python+opencv)

    關(guān)于初始種子自動選取的區(qū)域生長實例(python+opencv)

    今天小編就為大家分享一篇關(guān)于初始種子自動選取的區(qū)域生長實例(python+opencv),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-01-01
  • Django之PopUp的具體實現(xiàn)方法

    Django之PopUp的具體實現(xiàn)方法

    今天小編就為大家分享一篇Django之PopUp的具體實現(xiàn)方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-08-08
  • wxpython布局的實現(xiàn)方法

    wxpython布局的實現(xiàn)方法

    這篇文章主要介紹了wxpython布局的實現(xiàn)方法,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-11-11
  • python實現(xiàn)猜單詞小游戲

    python實現(xiàn)猜單詞小游戲

    這篇文章主要為大家詳細介紹了python實現(xiàn)猜單詞小游戲,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-06-06
  • Python?tkinter?多選按鈕控件?Checkbutton方法

    Python?tkinter?多選按鈕控件?Checkbutton方法

    這篇文章主要介紹了Python?tkinter?多選按鈕控件?Checkbutton方法,文章圍繞主題展開詳細的內(nèi)容介紹,具有一定的參考價值,需要的朋友可以參考一下
    2022-07-07
  • 一文深入了解Python中的繼承知識點

    一文深入了解Python中的繼承知識點

    Python?是面向?qū)ο蟮木幊陶Z言,因此支持面向?qū)ο蟮娜筇匦灾唬豪^承。本文就帶大家了解了解Python中繼承的相關(guān)知識點,感興趣的可以了解一下
    2022-11-11
  • django云端留言板實例詳解

    django云端留言板實例詳解

    這篇文章主要介紹了django云端留言板實例詳解,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-07-07
  • pytorch算子torch.arange在CPU?GPU?NPU中支持?jǐn)?shù)據(jù)類型格式

    pytorch算子torch.arange在CPU?GPU?NPU中支持?jǐn)?shù)據(jù)類型格式

    這篇文章主要為大家介紹了pytorch算子torch.arange在CPU?GPU?NPU支持?jǐn)?shù)據(jù)類型格式,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-09-09
  • python把列表中的字符串轉(zhuǎn)成整型的3種方法詳解

    python把列表中的字符串轉(zhuǎn)成整型的3種方法詳解

    這篇文章主要介紹了python把列表中的字符串轉(zhuǎn)成整型的3種方法詳解,python中在不同類型數(shù)據(jù)轉(zhuǎn)換方面是有標(biāo)準(zhǔn)庫的,使用非常方便,但是在開發(fā)中,經(jīng)常在list中字符轉(zhuǎn)成整形的數(shù)據(jù)方便遇到問題,需要的朋友可以參考下
    2023-07-07

最新評論