Python 3.6 生成器之Send方法
之前一篇生成器讲了通过yield完成生成器的创建,并且通过next方法获取每一次yield的值。
这一篇讲一下yield的另一个方法,send
def func1(): # 生成器函数print("ok1")x = 10 # 函数内局部变量x赋值为10print(x)x = yield 1 # 这里就是send函数的关键# 之前我们创建的生成器,yield左边都是没有值(我现在不是很确定这里是不是应该叫做返回值,那就先用值代替)。# 现在我们的x会接收到一个值,这个值是什么,从哪里来的?我们继续看下去print(x)yield x # 这里试第二个断点f1 = func1() # 获取生成器对象
ret1 = next(f1) # 运行到第一个yield
# ret1 = f1.send(None) #(这一句语句需要全部看完回头再看)当第一次执行生成器的时候,他并没有执行到yield这个位置,所以你一点传值,就会出现问题
# 谁去接收?没有对象接收就会报错,所以第一次如果一定要用send去调用,那就传一个None
print(ret1) # 打印第一个yield返回的值
#########################################
# 关键点来了
# 我们现在有两个问题,x = yield 1,这个x的值是什么,从哪里来
# 当下面这条语句运行后,他会将x的值赋值为send方法的参数,并且继续执行到下一个yield
ret2 = f1.send('eee')
print(ret2)# ok1
# 10
# 1
# eee
# eee# 问题都解决了,然后还有一个顺序的问题,我先把我测试的结论提出来,大家可以自己打断点尝试一下,欢迎拍砖
# f=func1()
# next(f)或者f.send(None) => def func1():
# ......
# x = yield 1 到这里会返回,x的值不变 => f1.send('eee')
# =>x = yield 1 这时候不要去管右边,左边的x被赋值('eee')然后继续执行
# 其实只要把yield的左边和右边分开看就行了,他们的触发条件不一样。
# 好了 这篇就到这里了
Python 3.6 生成器之Send方法相关推荐
- 生成器之Send方法--python
转:https://www.cnblogs.com/lanyinhao/p/9137956.html #send主要是用于外部与生成器对象的交互 def func1(): # 生成器函数print(& ...
- python生成yaml_使用python脚本自动生成K8S-YAML的方法示例
1.生成 servie.yaml 1.1.yaml转json service模板yaml apiVersion: v1 kind: Service metadata: name: ${jarName} ...
- Python生成器next方法和send方法区别详解
yield的语法规则是: 在yield这里暂停函数执行,并返回yield后面表达式的值(默认为None),直到被next()再次调用时,从上次暂停的yield代码处继续往下执行.当没有可继续next( ...
- Python协程中生成器send方法的使用
关于博主 努力与运动兼备-~~有任何问题可以加我好友或者关注微信公众号,欢迎交流,我们一起进步! 微信公众号: 啃饼思录 QQ: 2810706745(i思录) 写在前面 博主最近在利用协程写异步爬虫 ...
- python两种生成md5的方法
一. 使用md5包 import md5src = 'this is a md5 test.' m1 = md5.new() m1.update(src) print m1.hexdigest() 二 ...
- Python生成器对象send()方法用法
关于生成器基本用法请参考详解Python生成器函数和生成器对象的原理和用法 >>> def f(): yield from 'abcdefg' #使用yield表达式 ...
- Python系列(七):用栗子带你深入了解生成器的send()方法
一.问题引入 在Python中,可以使用生成器来一次返回单个元素,从而可以避免大量占用内存.下面例子中计算房价函数house_price便是一个生成器的栗子,该函数接收两个参数,其中unit_pric ...
- python特性(八):生成器对象的send方法
生成器对象是一个迭代器.但是它比迭代器对象多了一些方法,它们包括send方法,throw方法和close方法.这些方法,主要是用于外部与生成器对象的交互.本文先介绍send方法. send方法有一个参 ...
- python读取文件名存到list_python读取文件名称生成list的方法
下面为大家分享一篇python读取文件名称生成list的方法,具有很好的参考价值,希望对大家有所帮助.一起过来看看吧 经常需要读取某个文件夹下所有的图像文件. 我使用python写了个简单的代码,读取 ...
最新文章
- LinkedList阅读
- SQL 中 left join、right join、inner join 的区别
- ipv6 服务器虚拟机软件,ipv6虚拟主机是做什么的
- Qt DLL总结【二】-创建及调用QT的 DLL
- 【Oracle】恢复临时表空间数据文件
- Scala学习(一、环境配置和基础)
- CIA网攻中国11年,内网防护刻不容缓!
- 代码管理学:一时不检查,工作必走样
- 不容错过的30页超赞项目管理PPT
- 远程计算机桌面图标不见了怎么办,网络连接图标不见了原因有哪些【解决方法】...
- 在 Linux 中安装 Firefox
- 进程之间的通信(管道详解)
- 虚拟化服务器授权,VMware授权变相收费? 虚拟化一大障碍
- C语言怎样判断乘法越界,如何判断C语言算术运算的越界问题
- java学习-画图小程序
- python求素数积_python求质数的3种方法
- 基于springboot微信小程序支付功能实现
- 使用Android studio转换Jar包时,遇到的一个问题Could not find tools.jar.
- 网页版组态软件:Sovit2D Web组态可视化编辑器
- android ios耳机转换器,苹果新iPad Pro转向USB-C,那附带的音频线安卓手机能用么