欢迎使用皮肤 Geek|

园龄:粉丝:关注:

Python精简易懂yield解释

精简易懂yield解释。

yield可以理解为return,但是区别于return的是yield之后,还可以继续执行接下来的一系列行为。

return后的内容无法执行了,并且yield返回的是生成器,return是返回的结果类型。

# -*- coding: utf-8 -*-

def SayDuck():
    print("开始数鸭子:")
    duck = 0
    while duck<=10:
        duck +=1
        yield duck
        #yield 之后,下次的next开始的地方是接着上一次的next停止的地方执行的,所以调用next的时候,生成器并不会从SayDuck函数的开始执行,只是接着上一步停止的地方开始
        print("循环里的鸭子有{0}只".format(duck))


def SayDuck2():
    print("开始数鸭子:")
    duck = 0
    while duck<=10:
        duck +=1
        return duck
        #return 之后 永远也走不到这里,这是普通的函数return
        print("循环里的鸭子有{0}只".format(duck))

def SayDog():
    print("开始数狗子:")
    duck = 0
    while duck<=10:
        duck +=1
        yield duck
        # 这是一个数狗子的生成器,依次生成返回的数

if __name__ == '__main__':
    begin = SayDuck()
    begindj = SayDuck2()
    beginDog = SayDog()

    print("数鸭子函数返回的类型是:{}".format(type(begin)))
    print("数鸭子2函数返回的类型是:{}".format(type(begindj)))


    print(next(begin))
    print(next(begin))
    print(next(begin))

    #数狗子效果
    print(next(beginDog))
    print(next(beginDog))

有篇博文介绍的不错可以参考一下:

python中yield的用法详解——最简单,最清晰的解释_冯爽朗的博客-CSDN博客_python yield

本文作者:xxxyz

本文链接:https://www.cnblogs.com/xxxyz/p/16627138.html

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   xxxyz  阅读(52)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起