美文网首页工作生活
最简单明了的yield from解释

最简单明了的yield from解释

作者: 霡霂976447044 | 来源:发表于2019-07-02 15:02 被阅读0次
    def one():
        print('one start')
        res = yield from two()
        print('function get res: ', res)
        return 'one' + res
    
    
    def two():
        print('two start')
        res = yield from three()
        return res
    
    
    def three():
        yield 1
        return 'three'
    
    
    if __name__ == '__main__':
        gen = one()
        send_1 = gen.send(None)
        print(send_1)
        send_2 = gen.send(None)
        print(send_2)
    

    不要把yield from 想的太复杂,就把yield from调用看作是普通函数调用来看代码。一旦遇到yield会返回。再次send,特点和生成器一样。

    1. 当send里面的函数先遇到的是yield from语句,那么会继续往下调用,直到遇到yield。
    main->one()->two()->three->遇到yield- >main
    
    1. 遇到yield语句,会直接返回到send语句所在函数, 也就是send_1 = gen.send(None),send_1 赋值
    2. 再次调用send语句,就会变成1的反向调用
    three()->two()->one->main
    
    1. yield from后面的函数返回值会得到,赋值给左值
    three()的返回值会给two()的res,two()的返回值会给one()
    

    相关文章

      网友评论

        本文标题:最简单明了的yield from解释

        本文链接:https://www.haomeiwen.com/subject/ezwzcctx.html