zoukankan      html  css  js  c++  java
  • Python中yield关键字的用法及运行逻辑

    我们以这样一段代码作为例子

    def fun():
        print("进入fun函数了")
        x = yield 100
        print("在fun函数中的x:",x)
        yield "谢谢,你也快乐"
    
    
    f = fun()
    result = next(f)
    print(result)
    result2 = f.send("元宵节快乐")
    print("程序外面的result2:",result2)

    运行结果

    进入fun函数了
    100
    在fun函数中的x :元宵节快乐
    程序外面的result2 :谢谢,你也快乐

    解释

    f = fun()                          调用fun函数,控制台输出 “进入fun函数了”,执行到yield时等待next调用
    result = next(f)             yield继续执行,将100返回给result,函数挂起,此时x并没有被赋值
    print(result)               控制台打印100
    result2 = f.send("元宵节快乐")      end方法将“元宵节快乐”发送至函数挂起之后的时刻,此时x被赋值为“元宵节快乐”,函数继续运行,在控制台打印“在fun函数中的x :元宵节快乐” ,函数继续运行,再次遇到yeild关键字,并将“谢谢,你也快乐”返回到send之后的时刻,此时result2被赋值为“谢谢,你也快乐”,函数执行完毕
    print("程序外面的result2:",result2) 控制台打印“程序外面的result2 :谢谢,你也快乐”   
    讲的不对的地方欢迎来邮探讨   pighui233@163.com
  • 相关阅读:
    JQuery学习之(一)概述
    Ajax:拥抱JSON,让XML走开(转)
    .Net下采用GET/POST/SOAP方式动态调用WebService的简易灵活方法(C#)
    Nunit使用手记
    ajax常见问题总结
    单例模式代码
    asp.net网站url伪静态重写技术的实现
    WCF 基础加开发简介
    ExtJS调用WCF实现JSON传递
    lock 语句(C# 参考)
  • 原文地址:https://www.cnblogs.com/pighui/p/10388569.html
Copyright © 2011-2022 走看看