在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Python yield的作用

科技綠洲 ? 來源:Python實用寶典 ? 作者:Python實用寶典 ? 2023-11-02 11:21 ? 次閱讀

要理解yield的作用,你必須理解生成器是什么。在理解生成器之前,必須先理解迭代器。

迭代器

當(dāng)您創(chuàng)建一個列表時,你可以逐個讀取它的項。逐項讀取其項稱為迭代:

圖片

mylist是一個可迭代的對象。當(dāng)你使用列表解析式時,你創(chuàng)建了一個列表,因此也是一個迭代器:

圖片

所有你可以用"for... in ...."都是迭代器,包括列表、字符串、文件…等等。

這些迭代器非常方便,因為你可以隨心所欲地讀取它們,但是你將所有的值都存儲在內(nèi)存中,當(dāng)你有很多值時,這就非常浪費內(nèi)存了。

為了解決這樣的問題,Python有了生成器的概念。

生成器

生成器是迭代器,這種迭代器只能迭代一次。生成器不會將所有值都存儲在內(nèi)存中,它們會動態(tài)生成這些值:

圖片

它和列表解析式是類似的,只是用()代替了[]。但是,你不能在mygenerator中對i執(zhí)行第二次,因為生成器只能使用一次:它print(0),然后忘記它,print(1),最后是4。

Yield

yield是一個與return類似的關(guān)鍵字,只是函數(shù)將返回一個 生成器

認(rèn)真看完下面這個例子,你應(yīng)該能完全明白。

圖片

函數(shù)將返回一組只需要讀取一次的值。如果你能將這個特性理解清楚,并將其應(yīng)用到你的代碼中,可能可以極大地提高性能,下次我們將介紹在什么時候該用它。

請注意示例中的第6行,在調(diào)用函數(shù)時,在函數(shù)體中編寫的代碼不會運行。函數(shù)只返回生成器對象,可別忘了這個重點。

最后,你的代碼將從每次使用生成器時停止的地方繼續(xù)。因此示例中第二次使用生成器的時候,我們的生成器已經(jīng)完全沒有值了。

所以最核心的邏輯如下:

  1. for函數(shù)第一次調(diào)用從函數(shù)創(chuàng)建的生成器對象時,它將從頭運行函數(shù)中的代碼,直到達到y(tǒng)ield,返回循環(huán)的第一個值。
  2. 隨后的調(diào)用都將再次運行你在函數(shù)中編寫的循環(huán),并yield返回下一個值,直到?jīng)]有要返回的值為止,就如我們上面的例子所示。
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 存儲
    +關(guān)注

    關(guān)注

    13

    文章

    4507

    瀏覽量

    87125
  • 生成器
    +關(guān)注

    關(guān)注

    7

    文章

    322

    瀏覽量

    21725
  • python
    +關(guān)注

    關(guān)注

    56

    文章

    4825

    瀏覽量

    86295
收藏 人收藏

    評論

    相關(guān)推薦
    熱點推薦

    Pythonyield表達式及其批量獲得minibatches的應(yīng)用

    Python 小談 yield 表達式及其批量獲得 minibatches 的應(yīng)用
    發(fā)表于 05-21 08:20

    Python虛擬環(huán)境的作用和搭建方法

    Python虛擬環(huán)境的作用及搭建方法
    發(fā)表于 06-08 07:32

    Python在實時嵌入式系統(tǒng)中有什么作用?

    如何用Python語言去控制單片機?Python在實時嵌入式系統(tǒng)中有什么作用?
    發(fā)表于 07-14 06:33

    python生成器

    python生成器1. 什么是生成器?生成器(英文名 Generator ),是一個可以像迭代器那樣使用for循環(huán)來獲取元素的函數(shù)。生成器的出現(xiàn)(Python 2.2 +),實現(xiàn)了延時計算,從而緩解
    發(fā)表于 02-24 15:56

    python變量的作用

    python變量的作用域1. 作用Python作用域可以分為四種:L (Local) 局部作用
    發(fā)表于 03-03 16:50

    yield 開始入門python協(xié)程

    簡單介紹 yield本篇文章會先向你介紹一個陌生的 Python 關(guān)鍵詞,他和 return 就像一對新兄弟,有相似之處,又各有不同。相似的是:yield 和 return 都可以在一個函數(shù)里將值
    發(fā)表于 03-16 16:21

    Python教程之Python中的yield關(guān)鍵字能做什么詳細(xì)程序說明

    要理解yield做了什么,就必須明白生成器(generators)為何物,而在明白生成器之前還要知道迭代器(iterables)。
    發(fā)表于 12-25 11:21 ?12次下載
    <b class='flag-5'>Python</b>教程之<b class='flag-5'>Python</b>中的<b class='flag-5'>yield</b>關(guān)鍵字能做什么詳細(xì)程序說明

    python變量的作用

    python變量的作用域 1. 作用Python作用域可以分為四種: L (Local) 局部作用
    的頭像 發(fā)表于 03-03 16:50 ?1804次閱讀

    yield開始入門python協(xié)程

    本篇文章會先向你介紹一個陌生的 Python 關(guān)鍵詞,他和 return 就像一對新兄弟,有相似之處,又各有不同。
    的頭像 發(fā)表于 03-16 16:20 ?1178次閱讀

    通過例子由淺入深的理解yield協(xié)程

    send:send() 方法致使協(xié)程前進到下一個yield 語句,另外,生成器可以作為協(xié)程使用
    的頭像 發(fā)表于 08-23 11:12 ?2248次閱讀

    python語言之使用async關(guān)鍵字來定義函數(shù)

    早期的協(xié)程是用yield來實現(xiàn)的,但是代碼特別難懂, python3.5之后的版本, 使用 async 關(guān)鍵字來定義的函數(shù)。調(diào)用該函數(shù),會返回一個協(xié)程對象
    的頭像 發(fā)表于 08-24 11:12 ?3098次閱讀

    python語言之a(chǎn)wait和yield from的對比

    不同點:yield from 后面的值,要么是生成器,要么是最終為可迭代對象,而await后面只能跟async開頭的方法
    的頭像 發(fā)表于 08-24 12:02 ?2832次閱讀

    python中eval的用法和作用

    `eval()`函數(shù)的作用是將字符串作為Python表達式進行求值。它可以執(zhí)行包括算術(shù)運算、邏輯運算、函數(shù)調(diào)用以及定義在當(dāng)前命名空間中的變量等在內(nèi)的各種表達式。使用`eval()`可以動態(tài)地執(zhí)行代碼,并在代碼中使用變量或函數(shù)。
    的頭像 發(fā)表于 09-28 16:26 ?4752次閱讀

    如何學(xué)會 Python yield 關(guān)鍵詞

    要理解yield作用,你必須理解生成器是什么。在理解生成器之前,必須先理解迭代器。 1.迭代器 當(dāng)您創(chuàng)建一個列表時,你可以逐個讀取它的項。逐項讀取其項稱為迭代: mylist是一個可迭代的對象
    的頭像 發(fā)表于 10-31 11:06 ?446次閱讀
    如何學(xué)會 <b class='flag-5'>Python</b> <b class='flag-5'>yield</b> 關(guān)鍵詞

    Python中元類的作用

    1.什么是類 在理解元類之前,我們必須先掌握Python中的類(class)。 和大多數(shù)語言一樣,Python中的類知識用來描述如何“生成一個對象”: 但是,在Python中,類不僅能用來描述
    的頭像 發(fā)表于 11-02 11:18 ?801次閱讀
    <b class='flag-5'>Python</b>中元類的<b class='flag-5'>作用</b>
    主站蜘蛛池模板: 性色在线视频 | 最近2018中文字幕2019高清 | 性欧美成人依依影院 | 四虎.com| 九九99视频在线观看视频观看 | 四虎永久网址 | a级毛毛片看久久 | 国产欧美久久久精品影院 | 激情综合五月婷婷 | 天堂电影免费在线资源 | 婷婷精品视频 | 成人18视频拍拍拍拍拍拍 | 2017亚洲男人天堂 | 4399一级成人毛片 | 天天综合久久久网 | 怡红院日本一道日本久久 | 欧洲精品不卡1卡2卡三卡四卡 | 国产性大片黄在线观看在线放 | 久久大尺度 | 三级日韩 | 视频免费观看网址 | 男女交性视频免费 | 老头天天吃我奶躁我的动图 | 97影院理伦在线观看 | 狠狠狠狠狠操 | 国产成都一二三四区 | 亚洲午夜久久久精品影院视色 | 亚洲日本精品 | 香港三级在线视频 | video另类蛇交 | 永久免费品色堂 | 午夜在线观看免费视频 | 教官的好爽好深h片段 | 色天使在线视频 | 一色桃子juy774在线播放 | 成人在线一区二区三区 | h网址在线观看 | 亚洲一区日韩一区欧美一区a | 国产欧美日韩综合精品一区二区 | 免费抓胸吻胸激烈视频网站 | 天天做夜夜操 |