最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

基于Python中的yield表達(dá)式介紹

 更新時(shí)間:2019年11月19日 10:59:41   作者:jxzheng95  
今天小編就為大家分享一篇基于Python中的yield表達(dá)式詳解,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧

python生成器

python中生成器是迭代器的一種,使用yield返回函數(shù)值。每次調(diào)用yield會暫停,而可以使用next()函數(shù)和send()函數(shù)可以恢復(fù)生成器。

這里可以參考Python函數(shù)式編程指南:對生成器全面講解

注意到y(tǒng)ield是個(gè)表達(dá)式而不僅僅是個(gè)語句,所以可以使用x = yield r 這樣的語法。

這個(gè)知識點(diǎn)在協(xié)程中需要使用。協(xié)程的概念指的是在一個(gè)線程內(nèi),一個(gè)程序中斷去執(zhí)行另一個(gè)程序,有點(diǎn)類似于CPU中斷。這樣減少了切換線程帶來的負(fù)擔(dān),同時(shí)不需要多線程中的鎖機(jī)制,因?yàn)椴淮嬖谕瑫r(shí)寫的問題。

python使用生成器來實(shí)現(xiàn)協(xié)程,下面看一個(gè)python協(xié)程應(yīng)用于生產(chǎn)者消費(fèi)者問題的例子

def consumer():
 r = 'yield'
 while True:
  #當(dāng)下邊語句執(zhí)行時(shí),先執(zhí)行yield r,然后consumer暫停,此時(shí)賦值運(yùn)算還未進(jìn)行
  #等到producer調(diào)用send()時(shí),send()的參數(shù)作為yield r表達(dá)式的值賦給等號左邊
  n = yield r #yield表達(dá)式可以接收send()發(fā)出的參數(shù)
  if not n:
   return
  print('[CONSUMER] Consuming %s...' % n)
  r = '200 OK'

def produce(c):
 c.send(None)
 n = 0
 while n < 5:
  n = n + 1
  print('[PRODUCER] Producing %s...' % n)
  r = c.send(n) #調(diào)用consumer生成器
  print('[PRODUCER] Consumer return: %s' % r)
 c.close()

c = consumer()
produce(c)

注意到send需要先調(diào)用send(None),因?yàn)橹挥猩善魇菚和顟B(tài)才可以接收send的參數(shù)。

為了理解send()恢復(fù)生成器的過程,我們可以再看一個(gè)例子:

def gen():
 a = yield 1
 print('yield a % s' % a)
 b = yield 2
 print('yield b % s' % b)
 c = yield 3
 print('yield c % s' % c)


r = gen()
x = next(r)
print('next x %s' % x)
y = r.send(10)
print('next y %s' %y)
z = next(r)
print('next z %s' % z)

可以看到實(shí)際上y=r.send(10) 的參數(shù)10是賦給了a。整個(gè)運(yùn)行過程即執(zhí)行x=next(r) 之后,gen()執(zhí)行了yield 1 然后暫停,沒有進(jìn)行對a的賦值。但再調(diào)用y=r.send(10) 時(shí)賦值過程繼續(xù),并把10賦給了a.

以上這篇基于Python中的yield表達(dá)式介紹就是小編分享給大家的全部內(nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Python3中簡單的文件操作及兩個(gè)簡單小實(shí)例分享

    Python3中簡單的文件操作及兩個(gè)簡單小實(shí)例分享

    文件操作是我們?nèi)粘T谑褂胮ython的時(shí)候經(jīng)常會用到的,下面這篇文章主要給大家介紹了關(guān)于Python3中簡單的文件操作及兩個(gè)簡單小實(shí)例的相關(guān)資料,文中介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-06-06
  • Python模擬登陸網(wǎng)頁的三種方法小結(jié)

    Python模擬登陸網(wǎng)頁的三種方法小結(jié)

    如何使用Python模擬登陸網(wǎng)頁,尤其是在涉及到復(fù)雜的認(rèn)證機(jī)制時(shí)?這篇文章將詳細(xì)介紹Python模擬登陸網(wǎng)頁的三種方法,以及如何繞過一些常見的安全防護(hù)措施,需要的朋友可以參考下
    2024-01-01
  • 基于python監(jiān)控程序是否關(guān)閉

    基于python監(jiān)控程序是否關(guān)閉

    這篇文章主要介紹了基于python監(jiān)控程序是否關(guān)閉,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-01-01
  • python3利用ctypes傳入一個(gè)字符串類型的列表方法

    python3利用ctypes傳入一個(gè)字符串類型的列表方法

    今天小編就為大家分享一篇python3利用ctypes傳入一個(gè)字符串類型的列表方法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-02-02
  • PyTorch中的train()、eval()和no_grad()的使用

    PyTorch中的train()、eval()和no_grad()的使用

    本文主要介紹了PyTorch中的train()、eval()和no_grad()的使用,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-04-04
  • Python中threading模塊的Lock和RLock區(qū)別詳解

    Python中threading模塊的Lock和RLock區(qū)別詳解

    這篇文章主要介紹了Python中threading模塊的Lock和RLock區(qū)別詳解,Lock鎖是Python的原始鎖,在鎖定時(shí)不屬于任何一個(gè)線程,在調(diào)用了 lock.acquire() 方法后,進(jìn)入鎖定狀態(tài),lock.release()方法可以解鎖,底層是通過一個(gè)函數(shù)來實(shí)現(xiàn)的,需要的朋友可以參考下
    2023-09-09
  • Django日志模塊logging的配置詳解

    Django日志模塊logging的配置詳解

    日志在程序開發(fā)中是少不了的,通過日志我們可以分析到錯(cuò)誤在什么地方,有什么異常。在生產(chǎn)環(huán)境下有很大的用處。在java 開發(fā)中通常用 log4j,logback 等三方組件。下面這篇文章主要介紹了Django日志模塊logging的相關(guān)資料,需要的朋友可以參考下。
    2017-02-02
  • Django實(shí)現(xiàn)發(fā)送郵件找回密碼功能

    Django實(shí)現(xiàn)發(fā)送郵件找回密碼功能

    在各大網(wǎng)站上,一定都遇到過找回密碼的問題,通常采用的方式是通過發(fā)送帶有驗(yàn)證碼的郵件進(jìn)行身份驗(yàn)證,本文將介紹通過Django實(shí)現(xiàn)郵件找回密碼功能,需要的朋友可以參考下
    2019-08-08
  • Python實(shí)現(xiàn)棧的方法

    Python實(shí)現(xiàn)棧的方法

    這篇文章主要介紹了Python實(shí)現(xiàn)棧的方法,實(shí)例分析了Python實(shí)現(xiàn)棧的相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-05-05
  • matplotlib實(shí)現(xiàn)自定義散點(diǎn)形狀marker的3種方法

    matplotlib實(shí)現(xiàn)自定義散點(diǎn)形狀marker的3種方法

    本文主要介紹了matplotlib實(shí)現(xiàn)自定義散點(diǎn)形狀marker的3種方法,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-10-10

最新評論

惠安县| 班戈县| 邵武市| 木里| 凤庆县| 恩施市| 磴口县| 洪雅县| 伊金霍洛旗| 元氏县| 库车县| 大竹县| 阿勒泰市| 石门县| 措美县| 潞城市| 高陵县| 滦平县| 锡林浩特市| 壤塘县| 朝阳区| 墨竹工卡县| 徐闻县| 昭平县| 明光市| 项城市| 平阳县| 信宜市| 漳浦县| 澳门| 东台市| 徐州市| 延安市| 安陆市| 南京市| 水城县| 泌阳县| 阿克陶县| 黄龙县| 福安市| 遵义市|