国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

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)你有很多值時,這就非常浪費(fèi)內(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ù)體中編寫的代碼不會運(yùn)行。函數(shù)只返回生成器對象,可別忘了這個重點(diǎn)。

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

所以最核心的邏輯如下:

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

    關(guān)注

    13

    文章

    4791

    瀏覽量

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

    關(guān)注

    7

    文章

    322

    瀏覽量

    22715
  • python
    +關(guān)注

    關(guān)注

    57

    文章

    4876

    瀏覽量

    90031
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

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

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

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

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

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

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

    如何用Python語言去控制單片機(jī)?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 ?2201次閱讀

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

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

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

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

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

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

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

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

    python中eval的用法和作用

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

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

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