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

Python中yield關(guān)鍵字的理解與使用

 更新時(shí)間:2023年08月21日 14:53:34   作者:python收藏家  
yield關(guān)鍵字用于創(chuàng)建生成器函數(shù),一種高效利用內(nèi)存的函數(shù)類型,可以像迭代器對(duì)象一樣使用,本文主要介紹了Python中的yield關(guān)鍵字的應(yīng)用,需要的可以參考下

在本文中,我們將介紹Python中的yield關(guān)鍵字。在開始之前,讓我們了解一下yield關(guān)鍵字的定義。

Python中yield關(guān)鍵字的語法:

def gen_func(x):
    for i in range(x):
        yield i

yield關(guān)鍵字有什么作用

yield關(guān)鍵字用于創(chuàng)建生成器函數(shù)。一種高效利用內(nèi)存的函數(shù)類型,可以像迭代器對(duì)象一樣使用。

通俗地說,yield關(guān)鍵字將把任何與它一起給出的表達(dá)式轉(zhuǎn)換為生成器對(duì)象,并將其返回給調(diào)用者。因此,如果希望獲得存儲(chǔ)在生成器對(duì)象中的值,則必須迭代生成器對(duì)象。

Python中return和yield的區(qū)別

Python中的yield關(guān)鍵字類似于用于返回值的return語句,它將生成器對(duì)象返回給調(diào)用包含yield的函數(shù)的人,而不是簡單地返回一個(gè)值。它們之間的主要區(qū)別是,return語句終止函數(shù)的執(zhí)行。而yield語句只暫停函數(shù)的執(zhí)行。另一個(gè)區(qū)別是return語句永遠(yuǎn)不會(huì)執(zhí)行。而當(dāng)函數(shù)恢復(fù)其執(zhí)行時(shí)執(zhí)行yield語句。

yield優(yōu)點(diǎn):

使用yield關(guān)鍵字是非常高效的,因?yàn)橹挥挟?dāng)調(diào)用者遍歷對(duì)象時(shí)才會(huì)執(zhí)行。

當(dāng)變量狀態(tài)被保存時(shí),我們可以從同一點(diǎn)暫停和恢復(fù),從而節(jié)省時(shí)間。

yield缺點(diǎn):

有時(shí),由于函數(shù)生成器多次返回值,因此很難理解代碼流。

必須正確處理生成器函數(shù)的調(diào)用,否則可能會(huì)導(dǎo)致程序錯(cuò)誤。

示例1-Python中的Generator函數(shù)和yield關(guān)鍵字

生成器函數(shù)的行為與普通函數(shù)一樣,但具有一個(gè)定義特征。Python生成器函數(shù)使用yield關(guān)鍵字,而不是返回?cái)?shù)據(jù)。生成器的主要好處是它們自動(dòng)創(chuàng)建函數(shù)__iter__()和next()。生成器提供了一種非常整潔的技術(shù)來生成巨大或無限的數(shù)據(jù)。

def fun_generator():
    yield "Hello world!!"
    yield "Geeksforgeeks"
obj = fun_generator()
print(type(obj))
print(next(obj))
print(next(obj))

輸出:

<class 'generator'>
Hello world!!
Geeksforgeeks

示例2-生成無限序列

在這里,我們使用yield生成一個(gè)無限序列,yield返回?cái)?shù)字并將num遞增+ 1。

注意:這里我們可以觀察到num+=1在yield之后執(zhí)行,但是在return的情況下,在return關(guān)鍵字之后沒有執(zhí)行。

def inf_sequence():
    num = 0
    while True:
        yield num
        num += 1
for i in inf_sequence():
    print(i, end=" ")

輸出:

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 
26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 
49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 
72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96.......

示例3-在列表中使用yield

在這里,我們從列表中提取偶數(shù)。

# generator to print even numbers
def print_even(test_list):
    for i in test_list:
        if i % 2 == 0:
            yield i
# initializing list
test_list = [1, 4, 5, 6, 7]
# printing initial list
print("The original list is : " + str(test_list))
# printing even numbers
print("The even numbers in list are : ", end=" ")
for j in print_even(test_list):
    print(j, end=" ")

?輸出:

The original list is : [1, 4, 5, 6, 7]
The even numbers in list are :  4 6 

示例4-使用yield關(guān)鍵字作為布爾值

可能的實(shí)際應(yīng)用是,當(dāng)處理最后一個(gè)數(shù)據(jù)量并從中搜索細(xì)節(jié)時(shí),可以使用yield,因?yàn)槲覀儾恍枰獜念^開始重新查找,從而保存時(shí)間。根據(jù)使用情況,可能存在許多yield應(yīng)用。 ?

# func to count number of given word
def print_even(test_string):
    for i in test_string:
        if i == "geeks":
            yield i
# initializing string
test_string = " There are many geeks around you, \
              geeks are known for teaching other geeks"
# count numbers of geeks used in string
count = 0
print("The number of geeks in string is : ", end="")
test_string = test_string.split()
for j in print_even(test_string):
    count = count + 1
print(count)

?輸出:

The number of geeks in string is: 3

到此這篇關(guān)于Python中yield關(guān)鍵字的理解與使用的文章就介紹到這了,更多相關(guān)Python yield關(guān)鍵字內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • python matlab庫簡單用法講解

    python matlab庫簡單用法講解

    在本篇文章里小編給大家整理了一篇關(guān)于python matlab庫簡單用法講解內(nèi)容,有需要的朋友們可以學(xué)習(xí)下。
    2020-12-12
  • Python中最神秘missing()函數(shù)介紹

    Python中最神秘missing()函數(shù)介紹

    大家好,本篇文章主要講的是Python中最神秘missing()函數(shù)介紹,感興趣的同學(xué)趕快來看一看吧,對(duì)你有幫助的話記得收藏一下,方便下次瀏覽
    2021-12-12
  • python3.5實(shí)現(xiàn)socket通訊示例(TCP)

    python3.5實(shí)現(xiàn)socket通訊示例(TCP)

    本篇文章主要介紹了python3.5實(shí)現(xiàn)socket通訊示例(TCP),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-02-02
  • Python實(shí)現(xiàn)多路視頻多窗口播放功能

    Python實(shí)現(xiàn)多路視頻多窗口播放功能

    這篇文章主要為大家詳細(xì)介紹了Python實(shí)現(xiàn)多路視頻多窗口播放功能的相關(guān)知識(shí),文中的示例代碼講解詳細(xì),有需要的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2025-02-02
  • python將ansible配置轉(zhuǎn)為json格式實(shí)例代碼

    python將ansible配置轉(zhuǎn)為json格式實(shí)例代碼

    這篇文章主要介紹了python將ansible配置轉(zhuǎn)為json格式實(shí)例代碼的相關(guān)資料,需要的朋友可以參考下
    2017-05-05
  • pycharm 主題theme設(shè)置調(diào)整仿sublime的方法

    pycharm 主題theme設(shè)置調(diào)整仿sublime的方法

    今天小編就為大家分享一篇pycharm 主題theme設(shè)置調(diào)整仿sublime的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2018-05-05
  • Python星號(hào)*與**用法分析

    Python星號(hào)*與**用法分析

    這篇文章主要介紹了Python星號(hào)*與**用法,結(jié)合實(shí)例形式較為詳細(xì)的分析了Python中的星號(hào)*與**在函數(shù)參數(shù)及數(shù)值運(yùn)算中的相關(guān)使用技巧,需要的朋友可以參考下
    2018-02-02
  • Python使用random.shuffle()打亂列表順序的方法

    Python使用random.shuffle()打亂列表順序的方法

    今天小編就為大家分享一篇Python使用random.shuffle()打亂列表順序的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2018-11-11
  • Python中remove漏刪和索引越界問題的解決

    Python中remove漏刪和索引越界問題的解決

    這篇文章主要介紹了Python中remove漏刪和索引越界問題的解決,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-03-03
  • Django實(shí)現(xiàn)發(fā)送郵件找回密碼功能

    Django實(shí)現(xiàn)發(fā)送郵件找回密碼功能

    在各大網(wǎng)站上,一定都遇到過找回密碼的問題,通常采用的方式是通過發(fā)送帶有驗(yàn)證碼的郵件進(jìn)行身份驗(yàn)證,本文將介紹通過Django實(shí)現(xiàn)郵件找回密碼功能,需要的朋友可以參考下
    2019-08-08

最新評(píng)論

韶关市| 博兴县| 永靖县| 千阳县| 农安县| 六安市| 静宁县| 交口县| 孙吴县| 南阳市| 砚山县| 施秉县| 芒康县| 洞头县| 辽宁省| 伊金霍洛旗| 登封市| 红桥区| 易门县| 贵德县| 西乡县| 哈密市| 鄂尔多斯市| 平果县| 普兰县| 堆龙德庆县| 建平县| 綦江县| 陆良县| 乐山市| 陵水| 大方县| 天柱县| 柳江县| 宣汉县| 皋兰县| 义乌市| 玛沁县| 积石山| 绍兴市| 大名县|