博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python高级编程 读书笔记: 6、 第3章_生成器之间的交互
阅读量:3660 次
发布时间:2019-05-21

本文共 1061 字,大约阅读时间需要 3 分钟。

# -*- encoding: utf-8 -*-import functoolsimport time'''6、 第3章_生成器之间的交互关键:1 生成器的交互生成器协议: 提供了send方法,该方法允许生成器的反向沟通。            如果使用send方法而不是next重启生成器,那么提供给send方法的值实际上能被赋予给yield表达式的结果原理:生成器函数执行到yield表达式,消耗生成器的代码,通过send方法给生成器传回一个值,生成器收到了send函数传进来的这个值后,会视为是yield表达式的执行结果2 生成器交互的样例def squares(cursor=1):    while True:        response = yield cursor ** 2        if response:            cursor = int(response)        else:            cursor += 1分析:所以这里如果send传入的值为7,那么记住:response = yield cursor ** 2不等同于yield cursor ** 2response = cursor ** 2也就是response的值不是7 ** 2为49,而就是send传入的原始值7,因为根据原理的描述: 生成器接受到send传入的值会被作为yield表达式的结果如果没有通过send传入值,那么: response = yield cursor ** 2的yield表达式结果为None 参考:Python高级编程'''def squares(cursor=1):    import pdb;pdb.set_trace()    while True:        response = yield cursor ** 2        if response:            cursor = int(response)        else:            cursor += 1def useSquare():    sq = squares()    print next(sq)    print next(sq)    print sq.send(7)    print next(sq)def process():    useSquare()if __name__ == "__main__":    process()

 

转载地址:http://nvlfn.baihongyu.com/

你可能感兴趣的文章
数据类型输出格式
查看>>
记录 vim的d命令使用小技巧
查看>>
C C++数组要点
查看>>
web工程简述
查看>>
MVC模式与三层架构的区别
查看>>
超详细的java基础知识学习(java SE、javaEE)笔记 核心重点!
查看>>
linux系统裁剪
查看>>
博客数据库设计
查看>>
CentOS 7.0全自动安装光盘制作详解
查看>>
3. Springmvc架构
查看>>
浅谈线程和进程
查看>>
Android常用加密手段之MD5加密(字符串加密和文件加密)
查看>>
同步(Synchronous)和异步
查看>>
自定义View实战--实现一个清新美观的加载按钮
查看>>
linux进程间通信(四)之消息队列(message queue)
查看>>
linux fork()创建进程
查看>>
linux find name命令详解
查看>>
CGI介绍
查看>>
FastCGI介绍
查看>>
html js实现省市区联动调节下拉框菜单
查看>>