• yield和send


    前面已经说过yield的作用:

    1、类似于return每次返回一个值

    2、代码块(函数)暂停在yield的位置,下次调用时继续执行yield之后和之前的代码块

    3、通过next(f)获取到yield的返回值

    send的作用其实和yield类似:

    1、类似于return每次返回一个值

    2、代码块(函数)暂停在yield的位置,下次调用时继续执行yield之后和之前的代码块

    3、send(x)可以理解为next(x),也就是把send的结果当做yield的返回值给next来获取

    有点拗口,下面直接看例子:

    def c():
        n = 0
        while n < 2:
            n += 1
            print('...',n)
            s = yield n
            print(s)
        return 'done'
    
    a = c()
    for i in range(8):
        try:
            print(next(a))
        except StopIteration as e:
            print(e)
            break

    执行结果:

    ... 1
    1
    None
    ... 2
    2
    None
    done

    再看个例子:

    for i in range(8):
        try:
            if i == 1:
                a.send(8)  # send(x)等同于吧yield之后和之前的代码执行一遍,并返回x的值给next(a)
                print(next(a))  # 这里会继续调用next,继续执行yield之后的代码直到yield
            else:
                print(next(a))
        except StopIteration as e:
            print(e)
            break

    执行结果:

    ... 1
    1
    8
    ... 2
    None
    done
  • 相关阅读:
    postgresql删除活动链接的数据库
    第四篇 函数
    Jmeter响应中文乱码解决办法
    第三篇 条件控制和循环
    第二篇 Python运算符
    npm更换为镜像
    第一篇 Python的数据类型
    newman的常用命令使用总结
    windows下安装newman
    同态包络提取
  • 原文地址:https://www.cnblogs.com/wjlv/p/11669615.html
Copyright © 2020-2023  润新知