python3 生成器的send_Python:生成器中send()的行为
我在
python 3中尝试使用生成器并编写了这个相当人为的生成器:
def send_gen():
print(" send_gen(): will yield 1")
x = yield 1
print(" send_gen(): sent in '{}'".format(x))
# yield # causes StopIteration when left out
gen = send_gen()
print("yielded {}".format(gen.__next__()))
print("running gen.send()")
gen.send("a string")
输出:
send_gen(): will yield 1
yielded 1
running gen.send()
send_gen(): sent in 'a string'
Traceback (most recent call last):
File "gen_test.py", line 12, in
gen.send("a string")
StopIteration
所以gen .__ next __()到达x = yield 1并且得到1.我认为x将被赋值为None,然后gen.send()会查找下一个yield语句,因为x = yield 1是“used”,然后得到一个StopIteration.
相反,似乎发生的事情是x被发送“一个字符串”,打印出来,然后python尝试寻找下一个产量并得到一个StopIteration.
所以我试试这个:
def send_gen():
x = yield 1
print(" send_gen(): sent in '{}'".format(x))
gen = send_gen()
print("yielded : {}".format(gen.send(None)))
输出:
yielded : 1
但现在没有错误.在将x分配给None之后,send()似乎没有尝试查找下一个yield语句.
为什么行为略有不同?这与我如何启动发电机有关吗?
python3 生成器的send_Python:生成器中send()的行为相关推荐
- python3 生成器的send_Python3基础 yield send 获得生成器后,需要先启动一次
? ???????Python : 3.7.3 ?????????OS : Ubuntu 18.04.2 LTS ????????IDE : pycharm-community-2019.1.3 ?? ...
- Python中的yield关键字及表达式、生成器、生成器迭代器、生成器表达式详解
文章目录 1. yield关键字及表达式.生成器.生成器迭代器.生成器表达式 1.1 yield关键字及表达式(yield expression) 1.1.1 yield关键字 1.1.2 yield ...
- Python生成器generator之next和send运行流程
对于普通的生成器,第一个next调用,相当于启动生成器,会从生成器函数的第一行代码开始执行,直到第一次执行完yield语句(第4行)后,跳出生成器函数. 然后第二个next调用,进入生成器函数后,从y ...
- !! javascript_产量! 产量! 生成器如何在JavaScript中工作。
!! javascript by Ashay Mandwarya ?️?? 由Ashay Mandwarya提供吗? 产量! 产量! 生成器如何在JavaScript中工作. (Yield! Yiel ...
- 【Groovy】自定义 Xml 生成器 BuilderSupport ( setParent 方法中设置父节点与子节点关系 )
文章目录 一.setParent 方法中设置父节点与子节点关系 二.完整代码示例 1.MyBuilderSupport 生成器代码 2.使用 MyBuilderSupport 生成器创建 Xml 代码 ...
- python生成器表达式_python 生成器和生成器表达式
1.生成器 生成器的本质就是迭代器 生成器的特点和迭代器一样.取值方式和迭代器一样(__next__(),send():给上一个yield传值) 生成器一般由生成器函数或者生成器表达式来创建 其实就是 ...
- python迭代器和生成器(3元运算,列表生成式,生成器表达式,生成器函数)
1.1迭代器 什么是迭代器: 迭代器是一个可以记住遍历的位置对象 迭代器对象从集合的第一个元素元素开始访问,直到所有元素被访问完结束,迭代器只能往前不会后退. 迭代器有两个基本方法:iter ,nex ...
- Python学习day12(生成器,列表/生成器推导式)
Python学习day12(生成器,列表/生成器推导式) 生成器 初始生成器 我们知道的迭代器有两种:一种是调用方法直接返回的,一种是可迭代对象通过执行iter方法得到的,迭代器有的好处是可以节省内存 ...
- 异步生成器_使用生成器实现异步并等待
异步生成器 Nowadays we can write our asynchronous code in a synchronous way thanks to the async and await ...
- python 生成器函数_Python 生成器函数
def func(): print("我叫周润发") return "林志玲" # return在函数中表示返回的意思 ret = func() print(& ...
最新文章
- 分析两小段c++代码 关于unsigned运算的坑
- tensorflow tf.Variable 的用法
- 《途客圈创业记:不疯魔,不成活》一一2.1 创新工场初印象
- mysql多字段修改update_MySQL ------ 触发器(TRIGGER)(二十七)
- Delphi XE5 for Android (八)
- JAVA中的native
- Android 系统(95)---Android build.prop参数详解
- PHP生成海报 文字描边,php实现图片添加描边字和马赛克的方法
- Q77:怎么用Ray Tracing画仿射变换之后的图形
- 删除Linux上的用户
- php手机i选择图片多选,ios 相册图片多选 带预览功能
- web developer tips (18):从工具箱粘贴或拖拽控件时进行绝对定位
- 计算机建筑装饰设计入门,07建筑装饰《计算机装饰设计软件实训专用周.doc
- 超详细域名和二级域名、子域名免费配置SSL证书变成升级HTTPS(完整配置文件)
- 批量删除QQ空间说说和日志的js脚本
- mysql rpl_MySQL rpl_semi_sync_master_timeout相关的一件BUG
- Python分析抖音数据,让视频爆起来
- Houdini vop
- 干支纪年法简便算法_初中阶段常用的四种历史纪年法
- [RK3288][Android6.0] 调试笔记 --- WiFi芯片AP6356S添加
热门文章
- mysql 插入数据时,出现\xF0\x5F\x6F\x70问题
- springboot整合视图层Thymeleaf、freemarker
- reactjs生命周期:setState流程 shouldComponentUpdate componentWillUpdate render componentDidUpdate
- HBase 2.0 之修复工具 HBCK2 运维指南
- docker-compose部署prometheus
- k8s设置标签禁止istio边车sidebar注入
- Python Django 多表插入之重写save()方法代码示例
- Python Django 常用字段类型
- 请你解释一下HashMap具体如何实现的?
- Linux部署Ant Design Pro项目及nginx部署