zoukankan      html  css  js  c++  java
  • python——函数 21、yield的表达形式

    1、yield的作用

    def foo():
        print('ffff')
        while True:
            x=yield
            print('memeda', x)
    a=foo()
    print(next(a))
    print('==============>')
    print(next(a))
    print('===============>')
    print(next(a))
    只写一个next  步骤:进入函数体发现print('ffff')打印ffff 继续向下走
    发现一个yield 将函数挂起 并且返回yield的返回值 但是此段代码没有写返回值那么就会返回None
    写两个next时 由在上次yield挂起的地方继续向下运行 发现一个print('memeda',x)并将他打印出来
    然后又进入while循环 又碰到yield 挂起 以此类推 无限循环~~~结果如下图所示:

    
    
    2、send用法:

    send与next用法一样都是再次触发代码的执行
    但是肯定有不同之处,看下面代码
    def foo():
        print('ffff')
        while True:
            x=yield
            print('memeda', x)
    a=foo()
    next(a)    #激活生成器
    print(a.send(1))
    此函数第一次挂起的地方就是那个yield 当你用.send(1)再次将他触发时 首先将1赋值给yield然后再将yield赋给x,再接着向后走,这就是和next不同的地方
    所以此函数执行结果如下图:

    3、shed(None)等同于next()
    def foo():
        print('ffff')
        while True:
            x=yield
            print('memeda', x)
    a=foo()
    a.send(None)    #nest(a)
    print(a.send(1))
     
     
  • 相关阅读:
    前端面试集锦
    nodeJs上传附件
    逻辑于 逻辑或
    webpack 学习笔记 (一)
    yum 安装mongodb mysql
    闭包面试提 (2)
    主动的重要性
    1.1一天一题:逆转字符串
    编程提高:一天一道编程题
    iconv将文件编码从gb2312 转换为utf-8
  • 原文地址:https://www.cnblogs.com/StevenSunYiwen/p/9376915.html
Copyright © 2011-2022 走看看