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

Python yield 小結(jié)和實(shí)例

 更新時(shí)間:2014年04月25日 11:55:35   作者:  
yield的作用就是把一個(gè)函數(shù)變成一個(gè) generator,帶有 yield 的函數(shù)不再是一個(gè)普通函數(shù),Python 解釋器會(huì)將其視為一個(gè) generator(不知道什么是generator要先去理解一下Python的generator的了)

一個(gè)帶有 yield 的函數(shù)就是一個(gè) generator,它和普通函數(shù)不同,生成一個(gè) generator 看起來(lái)像函數(shù)調(diào)用,但不會(huì)執(zhí)行任何函數(shù)代碼,直到對(duì)其調(diào)用 next()(在 for 循環(huán)中會(huì)自動(dòng)調(diào)用 next())才開(kāi)始執(zhí)行。雖然執(zhí)行流程仍按函數(shù)的流程執(zhí)行,但每執(zhí)行到一個(gè) yield 語(yǔ)句就會(huì)中斷,并返回一個(gè)迭代值,下次執(zhí)行時(shí)從 yield 的下一個(gè)語(yǔ)句繼續(xù)執(zhí)行??雌饋?lái)就好像一個(gè)函數(shù)在正常執(zhí)行的過(guò)程中被 yield 中斷了數(shù)次,每次中斷都會(huì)通過(guò) yield 返回當(dāng)前的迭代值。

yield 的好處:把一個(gè)函數(shù)改寫(xiě)為一個(gè) generator 就獲得了迭代能力,比起用類的實(shí)例保存狀態(tài)來(lái)計(jì)算下一個(gè) next() 的值,不僅代碼簡(jiǎn)潔,而且執(zhí)行流程異常清晰。

測(cè)試代碼:
 

復(fù)制代碼 代碼如下:

#!/usr/bin/env python
#-*- coding:utf8 -*-

def fab(max):
    """斐波那契數(shù)列"""
    n, a, b = 0, 0, 1
    while n < max:
        yield b
        a, b = b, a + b
        n += 1


def perm(items, n=None):
    """全排列"""
    if n is None:
        n = len(items)
    for i in range(len(items)):
        v = items[i:i+1]
        if n == 1:
            yield v
        else:
            rest = items[:i] + items[i+1:]
            for p in perm(rest, n-1):
                yield v + p

if __name__ == '__main__':
    for n in fab(5):
        print n
    print  "全排列:123"
    for n in perm("123"):
        print n

相關(guān)文章

  • 簡(jiǎn)單了解Python matplotlib線的屬性

    簡(jiǎn)單了解Python matplotlib線的屬性

    這篇文章主要介紹了簡(jiǎn)單了解Python matplotlib線的屬性,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-06-06
  • Python機(jī)器學(xué)習(xí)iris數(shù)據(jù)集預(yù)處理和模型訓(xùn)練方式

    Python機(jī)器學(xué)習(xí)iris數(shù)據(jù)集預(yù)處理和模型訓(xùn)練方式

    iris數(shù)據(jù)集包含150個(gè)樣本,每個(gè)樣本有4個(gè)特征及其類別信息,本文介紹了iris數(shù)據(jù)集的基本操作和如何使用knn模型進(jìn)行花卉種類預(yù)測(cè),是機(jī)器學(xué)習(xí)中的經(jīng)典案例,適用于監(jiān)督式學(xué)習(xí)
    2024-10-10
  • Python的組合模式與責(zé)任鏈模式編程示例

    Python的組合模式與責(zé)任鏈模式編程示例

    這篇文章主要介紹了Python的組合模式與責(zé)任鏈模式編程示例,組合模式與責(zé)任鏈模式都屬于Python的設(shè)計(jì)模式,需要的朋友可以參考下
    2016-02-02
  • python 模擬登陸github的示例

    python 模擬登陸github的示例

    這篇文章主要介紹了python 模擬登陸github的示例代碼,幫助大家更好的理解和學(xué)習(xí)python 爬蟲(chóng)的相關(guān)知識(shí),感興趣的朋友可以了解下
    2020-12-12
  • 對(duì)pyqt5之menu和action的使用詳解

    對(duì)pyqt5之menu和action的使用詳解

    今天小編就為大家分享一篇對(duì)pyqt5之menu和action的使用詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-06-06
  • python--字典(dict)和集合(set)詳解

    python--字典(dict)和集合(set)詳解

    本文通過(guò)實(shí)例給大家介紹了python中字典和集合的知識(shí)小結(jié),非常不錯(cuò),具有參考借鑒價(jià)值,需要的的朋友參考下吧,希望能夠給你帶來(lái)幫助
    2021-09-09
  • PyQt5超詳細(xì)入門(mén)級(jí)教程(推薦!)

    PyQt5超詳細(xì)入門(mén)級(jí)教程(推薦!)

    PyQt5是Python編程語(yǔ)言的一個(gè)模塊,它提供了一種在Python中使用Qt庫(kù)的方式,下面這篇文章主要給大家介紹了關(guān)于PyQt5超詳細(xì)入門(mén)級(jí)教程的相關(guān)資料,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2024-09-09
  • django queryset相加和篩選教程

    django queryset相加和篩選教程

    這篇文章主要介紹了django queryset相加和篩選教程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-05-05
  • Django自定義分頁(yè)效果

    Django自定義分頁(yè)效果

    這篇文章主要為大家詳細(xì)介紹了Django自定義分頁(yè)效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-06-06
  • Python實(shí)現(xiàn)讀取大量Excel文件并跨文件批量計(jì)算平均值

    Python實(shí)現(xiàn)讀取大量Excel文件并跨文件批量計(jì)算平均值

    這篇文章主要為大家詳細(xì)介紹了如何利用Python語(yǔ)言,實(shí)現(xiàn)對(duì)多個(gè)不同Excel文件進(jìn)行數(shù)據(jù)讀取與平均值計(jì)算的方法,感興趣的可以了解一下
    2023-02-02

最新評(píng)論

桐庐县| 镇平县| 沙田区| 措勤县| 溧水县| 九龙县| 桂林市| 合肥市| 陆丰市| 砀山县| 阿拉善左旗| 清丰县| 西乌珠穆沁旗| 莫力| 五指山市| 静安区| 明星| 临泉县| 怀来县| 遵义县| 长武县| 阆中市| 龙门县| 连城县| 德化县| 科尔| 清丰县| 广安市| 聊城市| 永新县| 黔东| 西乌| 托克逊县| 沙洋县| 怀远县| 平远县| 江永县| 渝北区| 原平市| 双辽市| 红桥区|