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

python之yield和Generator深入解析

 更新時(shí)間:2019年09月18日 11:13:30   作者:郭雪原  
這篇文章主要介紹了python之yield和Generator深入解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下

首先我們從一個(gè)小程序?qū)?,各定一個(gè)list,找出其中的素?cái)?shù),我們會(huì)這樣寫(xiě)

import math
def is_Prims(number):
  if number == 2:
    return True
  //除2以外的所有偶數(shù)都不是素?cái)?shù)
  elif number % 2 == 0:
    return False
  //如果一個(gè)數(shù)能被除1和本身之外的數(shù)整除,則為合數(shù)。其實(shí)我們的判定范圍到根號(hào)n就可以
  for cur in range(2,int(math.sqrt(number))+1,2):
    if number % cur == 0:
      return False
    else:
      return True
def get_Prims(input_list):

  result_list = list()
  for element in input_list:
    if is_Prims(element):
      result_list.append(element)
  return result_list
aa = get_Prims([1,2,3,4,5,6,7,8,9])
print (aa)

但如果我們想給定一個(gè)數(shù),然后列出比這個(gè)數(shù)大的所有素?cái)?shù)呢?我們可能這樣寫(xiě):

def get_Prims(number):
  if is_Prims(number):
    return number

但是一旦return函數(shù)將控制權(quán)交給調(diào)用者后徹底結(jié)束,任何局部變量和函數(shù)工作都被丟棄,下一次調(diào)用又會(huì)從頭開(kāi)始。因此我們就可以用一下寫(xiě)法:

def get_Prims(number):
  while(True):
    if is_Prims(number):
      yield number
    number += 1
def get_numbers():
  total = list()
  for next_prim in get_Prims(2):
    if next_prim < 100:
      total.append(next_prim)
    else:
      print(total)
      return
get_numbers()

下面解釋一下generator函數(shù),一個(gè)函數(shù)的def代碼里包含了yield,函數(shù)就自動(dòng)成為了一個(gè)generator函數(shù)(及時(shí)仍包含有return),generator函數(shù)創(chuàng)建generator(一種特殊形式的迭代器,這個(gè)迭代器有一個(gè)內(nèi)置__next__()方法),當(dāng)需要一個(gè)值的時(shí)候通過(guò)yield來(lái)產(chǎn)生而不是直接return,因此與一般函數(shù)不同的是,此時(shí)控制權(quán)并未交出。

for循環(huán)會(huì)隱式的調(diào)用next()函數(shù),next()函數(shù)負(fù)責(zé)調(diào)用generator中的__next__()方法,此時(shí)generator負(fù)責(zé)返回一個(gè)值給任何調(diào)用next()的方法,利用yield將此值傳回去,相當(dāng)于return語(yǔ)句。

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • keras訓(xùn)練淺層卷積網(wǎng)絡(luò)并保存和加載模型實(shí)例

    keras訓(xùn)練淺層卷積網(wǎng)絡(luò)并保存和加載模型實(shí)例

    這篇文章主要介紹了keras訓(xùn)練淺層卷積網(wǎng)絡(luò)并保存和加載模型實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-07-07
  • python多線程中獲取函數(shù)返回值的三種方法

    python多線程中獲取函數(shù)返回值的三種方法

    本文主要介紹了python多線程中獲取函數(shù)返回值的三種方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-03-03
  • python實(shí)現(xiàn)圖像隨機(jī)裁剪的示例代碼

    python實(shí)現(xiàn)圖像隨機(jī)裁剪的示例代碼

    這篇文章主要介紹了python實(shí)現(xiàn)圖像隨機(jī)裁剪的示例代碼,幫助大家更好的理解和使用python處理圖片,感興趣的朋友可以了解下
    2020-12-12
  • 淺談django開(kāi)發(fā)者模式中的autoreload是如何實(shí)現(xiàn)的

    淺談django開(kāi)發(fā)者模式中的autoreload是如何實(shí)現(xiàn)的

    下面小編就為大家?guī)?lái)一篇淺談django開(kāi)發(fā)者模式中的autoreload是如何實(shí)現(xiàn)的。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-08-08
  • 基于python實(shí)現(xiàn)對(duì)文件進(jìn)行切分行

    基于python實(shí)現(xiàn)對(duì)文件進(jìn)行切分行

    這篇文章主要介紹了基于python實(shí)現(xiàn)對(duì)文件進(jìn)行切分行,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-04-04
  • python使用xlrd模塊讀取excel的方法實(shí)例

    python使用xlrd模塊讀取excel的方法實(shí)例

    Python讀取Excel表格,相比xlwt來(lái)說(shuō),xlrd提供的接口比較多,下面這篇文章主要給大家介紹了關(guān)于python使用xlrd模塊讀取excel的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-03-03
  • Python bisect_left 函數(shù)使用場(chǎng)景詳解

    Python bisect_left 函數(shù)使用場(chǎng)景詳解

    在Python的編程世界中,數(shù)據(jù)處理和搜索操作是非常常見(jiàn)的任務(wù),bisect_left函數(shù)是Python標(biāo)準(zhǔn)庫(kù)bisect模塊中的一個(gè)強(qiáng)大工具,接下來(lái),我們將詳細(xì)探討bisect_left函數(shù)的使用場(chǎng)景,需要的朋友可以參考下
    2024-11-11
  • OpenCV實(shí)現(xiàn)對(duì)象跟蹤的方法

    OpenCV實(shí)現(xiàn)對(duì)象跟蹤的方法

    OpenCV 是一個(gè)很好的處理圖像和視頻的工具,本文主要介紹了OpenCV 進(jìn)行對(duì)象跟蹤,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-10-10
  • python實(shí)現(xiàn)獲取Ip歸屬地等信息

    python實(shí)現(xiàn)獲取Ip歸屬地等信息

    本文給大家簡(jiǎn)單介紹了下如何使用Python實(shí)現(xiàn)獲取IP歸屬地信息的方法和代碼,非常的實(shí)用,有需要的小伙伴可以參考下
    2016-08-08
  • python BlockingScheduler定時(shí)任務(wù)及其他方式的實(shí)現(xiàn)

    python BlockingScheduler定時(shí)任務(wù)及其他方式的實(shí)現(xiàn)

    這篇文章主要介紹了python BlockingScheduler定時(shí)任務(wù)及其他方式的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-09-09

最新評(píng)論

建瓯市| 商南县| 舟山市| 鄂州市| 克拉玛依市| 邵武市| 临江市| 余姚市| 霍邱县| 新绛县| 四子王旗| 泊头市| 舞阳县| 安远县| 洮南市| 和平区| 湄潭县| 荥阳市| 江山市| 湟源县| 寿光市| 天镇县| 民乐县| 封开县| 杭锦旗| 柳州市| 枣强县| 临颍县| 麻江县| 北票市| 桓仁| 南昌县| 南木林县| 淮南市| 云南省| 柳林县| 永康市| 新安县| 犍为县| 三穗县| 博湖县|