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

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

Python yield的作用

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

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

迭代器

當您創建一個列表時,你可以逐個讀取它的項。逐項讀取其項稱為迭代:

圖片

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

圖片

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

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

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

生成器

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

圖片

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

Yield

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

認真看完下面這個例子,你應該能完全明白。

圖片

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

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

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

所以最核心的邏輯如下:

  1. for函數第一次調用從函數創建的生成器對象時,它將從頭運行函數中的代碼,直到達到yield,返回循環的第一個值。
  2. 隨后的調用都將再次運行你在函數中編寫的循環,并yield返回下一個值,直到沒有要返回的值為止,就如我們上面的例子所示。
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 存儲
    +關注

    關注

    13

    文章

    4353

    瀏覽量

    86105
  • 生成器
    +關注

    關注

    7

    文章

    319

    瀏覽量

    21092
  • python
    +關注

    關注

    56

    文章

    4807

    瀏覽量

    84975
收藏 人收藏

    評論

    相關推薦

    Pythonyield表達式及其批量獲得minibatches的應用

    Python 小談 yield 表達式及其批量獲得 minibatches 的應用
    發表于 05-21 08:20

    Python虛擬環境的作用和搭建方法

    Python虛擬環境的作用及搭建方法
    發表于 06-08 07:32

    Python在實時嵌入式系統中有什么作用?

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

    python生成器

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

    python變量的作用

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

    yield 開始入門python協程

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

    Python教程之Python中的yield關鍵字能做什么詳細程序說明

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

    python變量的作用

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

    yield開始入門python協程

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

    通過例子由淺入深的理解yield協程

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

    python語言之使用async關鍵字來定義函數

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

    python語言之await和yield from的對比

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

    python中eval的用法和作用

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

    如何學會 Python yield 關鍵詞

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

    Python中元類的作用

    1.什么是類 在理解元類之前,我們必須先掌握Python中的類(class)。 和大多數語言一樣,Python中的類知識用來描述如何“生成一個對象”: 但是,在Python中,類不僅能用來描述
    的頭像 發表于 11-02 11:18 ?572次閱讀
    <b class='flag-5'>Python</b>中元類的<b class='flag-5'>作用</b>
    主站蜘蛛池模板: 亚洲美女视频一区二区三区 | 亚洲天天操 | 午夜毛片免费看 | 国产精品虐乳在线播放 | 四虎电影院| 91日韩精品天海翼在线观看 | 国产特黄特色的大片观看免费视频 | 国产精品四虎在线观看免费 | 天天在线干 | 久久成人网18网站 | 日本aaaa级毛片在线看 | 国产在线成人一区二区 | 国产叼嘿视频免费网站 | 奇米影视四色7777 | 色综合天天综合网站中国 | 人人干人人艹 | 嫩草黄色影院 | 久久精品国产乱子伦多人 | 中文字幕欧美成人免费 | 成年人看的毛片 | 日本黄色影片在线观看 | 亚洲国产精品日韩专区avtube | 一级特黄国产高清毛片97看片 | 一区二区三区中文字幕 | 国产专区日韩精品欧美色 | 亚洲乱亚洲乱妇41p国产成人 | 韩国电影天堂 | 超级毛片| 四虎影院色 | 亚洲视频一二 | 国产色婷婷精品综合在线观看 | 亚洲精品91大神在线观看 | 五月婷婷激情在线 | 天天干天天摸 | 国产福利午夜 | 亚洲成a人片777777久久 | 爱婷婷视频在线观看 | 日本黄页网 | 国产性videostv另类极品 | 天天色影综合网 | 成年免费大片黄在线观看免费 |