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

Python中Yield的基本用法及Yield與return的區(qū)別解析

 更新時間:2022年10月31日 14:27:53   作者:xu0927  
Python中有一個非常有用的語法叫做生成器,用到的關(guān)鍵字就是yield,這篇文章主要介紹了Python中Yield的基本用法及Yield與return的區(qū)別,需要的朋友可以參考下

一、yield的功能

Python中有一個非常有用的語法叫做生成器,用到的關(guān)鍵字就是yield。yield的作用是把一個函數(shù)變成生成器(generator),起到一個延遲的作用。
帶有yield的函數(shù)在Python中被稱之為generator(生成器),也就是說,當(dāng)你調(diào)用這個函數(shù)的時候,函數(shù)內(nèi)部的代碼并不立即執(zhí)行 ,這個函數(shù)只是返回一個生成器(Generator Iterator)。

1. 使用next方法迭代生成器

generator函數(shù)怎么調(diào)用呢?答案是next函數(shù)。

def generator():
 for i in range(10) :
  yield i*i
  
gen = generator()
print(gen)
  
print("first iteration:")
print(next(gen))
  
print("second iteration:")
print(next(gen))
  
print("third iteration:")
print(next(gen))
  
print("fourth iteration:")
print(next(gen))

程序輸出:

<generator object generator at 0x7ffaad115aa0>first iteration:
 0
 second iteration:
 1
 three iteration:
 4
 four iteration:
 9

在函數(shù)第一次調(diào)用next(gen)函數(shù)時,generator函數(shù)從開始執(zhí)行到y(tǒng)ield,并返回yield之后的值。

在函數(shù)第二次調(diào)用next(gen)函數(shù)時,generator函數(shù)從上一次yield結(jié)束的地方繼續(xù)運行,直至下一次執(zhí)行到y(tǒng)ield的地方,并返回yield之后的值。依次類推。

2. 使用send()方法與生成器函數(shù)通信

def generator():
 x = 1
 while True:
  y = (yield x)
  x += y
  
gen = generator()
    
print("first iteration:")
print(next(gen))
  
print("send iteration:")
print(gen.send(10))

代碼輸出:

first iteration:
 1
 send iteration:
 11

生成器(generator)函數(shù)用yield表達(dá)式將處理好的x發(fā)送給生成器(Generator)的調(diào)用者;然后生成器(generator)的調(diào)用者可以通過send函數(shù),將外部信息替換生成器內(nèi)部yield表達(dá)式的返回值,并賦值給y,并參與后續(xù)的迭代流程。

實例2:

def dog(name):
    food_list=[]
    print('狗哥%s準(zhǔn)備開吃'%name)
    while True:
        food=yield food_list   #  暫停food=yield='一桶泔水'
        print('狗哥%s吃了%s'%(name,food))
        food_list.append(food)
 
dog_name=dog('Ami')
next(dog_name)
dog_name.send('肉肉')
dog_name.send('包子')

代碼輸出:

狗哥Ami準(zhǔn)備開吃
狗哥Ami吃了肉肉
狗哥Ami吃了包子

3. Yield的好處

Python之所以要提供這樣的解決方案,主要是內(nèi)存占用和性能的考量??搭愃葡旅娴拇a:

def my_range(start,stop,step=1):
    while start<stop:
        yield start #暫停
        start += step
 
g=my_range(1,30,2)  #1 3
print('first iteration:')
print(next(g))
print('scond iteration:')
print(next(g))
print(next(g))

運行結(jié)果

first iteration
1
scond iteration
3
5

二、總結(jié)yield的功能

1、提供一種自定義迭代器的方式
2、可以節(jié)約內(nèi)存空間
3、yield可以暫停住函數(shù),返回值
4、yield可以返回值,同時可以賦值,如下:

yield 值
x=yield
x= yield 值

三、yield VS return

相同點:都是用在函數(shù)內(nèi),都可以返回值,沒有類型限制,沒有個數(shù)限制
不同點:return只能返回一次值,yield可以返回多次值

到此這篇關(guān)于Python中Yield的基本用法及Yield與return的區(qū)別的文章就介紹到這了,更多相關(guān)Python Yield與return的區(qū)別內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • python中xlwt模塊的具體用法

    python中xlwt模塊的具體用法

    本文主要介紹了python中xlwt模塊的具體用法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-02-02
  • python爬蟲開發(fā)之使用Python爬蟲庫requests多線程抓取貓眼電影TOP100實例

    python爬蟲開發(fā)之使用Python爬蟲庫requests多線程抓取貓眼電影TOP100實例

    這篇文章主要介紹了python爬蟲開發(fā)之使用Python爬蟲庫requests多線程抓取貓眼電影TOP100實例,需要的朋友可以參考下
    2020-03-03
  • python的turtle庫使用詳解

    python的turtle庫使用詳解

    在本篇文章里小編給大家分享了關(guān)于python的turtle庫相關(guān)知識點以及使用方法,需要的朋友們跟著學(xué)習(xí)下。
    2019-05-05
  • Python常見的函數(shù)及格式化輸出

    Python常見的函數(shù)及格式化輸出

    這篇文章主要介紹了Python常見的upper()、lower()、title()等函數(shù),感興趣的朋友可以一起來學(xué)習(xí)學(xué)習(xí)文章內(nèi)容
    2021-09-09
  • 如何用python免費看美劇

    如何用python免費看美劇

    在本篇文章里小編給大家整理的是關(guān)于如何用python免費看美劇的方法內(nèi)容,需要的朋友們可以學(xué)習(xí)下。
    2020-08-08
  • Python中的None與 NULL(即空字符)的區(qū)別詳解

    Python中的None與 NULL(即空字符)的區(qū)別詳解

    這篇文章主要介紹了Python中的None與 NULL(即空字符)的區(qū)別詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-09-09
  • Jupyter notebook如何修改平臺字體

    Jupyter notebook如何修改平臺字體

    這篇文章主要介紹了Jupyter notebook如何修改平臺字體,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-05-05
  • 用python寫個顏值評分器篩選最美主播

    用python寫個顏值評分器篩選最美主播

    這篇文章主要介紹了我如何用python寫顏值評分器,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-08-08
  • Python json模塊dumps、loads操作示例

    Python json模塊dumps、loads操作示例

    這篇文章主要介紹了Python json模塊dumps、loads操作,結(jié)合實例形式分析了Python使用json模塊針對json數(shù)據(jù)的載入、讀取、打印、編碼轉(zhuǎn)換等相關(guān)操作技巧,需要的朋友可以參考下
    2018-09-09
  • Python 實現(xiàn)數(shù)據(jù)結(jié)構(gòu)-循環(huán)隊列的操作方法

    Python 實現(xiàn)數(shù)據(jù)結(jié)構(gòu)-循環(huán)隊列的操作方法

    這篇文章主要介紹了Python 實現(xiàn)數(shù)據(jù)結(jié)構(gòu)-循環(huán)隊列的操作方法,需要的朋友可以參考下
    2019-07-07

最新評論

西藏| 大安市| 楚雄市| 元氏县| 昌吉市| 彭阳县| 宿迁市| 楚雄市| 仪征市| 贵港市| 泽州县| 舞钢市| 定西市| 平顶山市| 政和县| 博罗县| 迁西县| 体育| 井冈山市| 盈江县| 英超| 彭水| 玛纳斯县| 德安县| 应城市| 铜鼓县| 自贡市| 中卫市| 昭平县| 蓬溪县| 盐津县| 红原县| 汤原县| 腾冲县| 颍上县| 河津市| 新兴县| 周口市| 西乌珠穆沁旗| 延吉市| 古浪县|