博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
9月5日学习内容整理:send 生成器表达式
阅读量:6413 次
发布时间:2019-06-23

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

一、生成器函数中send的用法

value =  yield  1

如上式

g.send( 123 )

1、程序执行到yield 1 时停止,程序停留在yield 1 这个位置,等待下一次执行

2、当使用send时,相当于也执行g._ _next_ _,这时程序会从yield 1的位置继续执行,send传递过来的123会代替yield 1 这个位置从而赋值给value,程序继续向下执行,直到再次遇到yield 

3、send不能在程序开始时用,虽然相当于_ _next_ _,但是程序找不到值去接受它。就算是程序一开始就是value = yield 1这种情况,不会说先执行到yield再赋值,这样不符合逻辑,因为程序刚开始运行send就传递过来一个值,没有东西去接受它这时送进去的就是None,生成器刚启动就接受一个None值,这样不符合逻辑,程序没有办法继续运行下去,所以会报错

 

二、生成器表达式和列表推导式

1、列表推导式:简化代码,但是内存占用很大

print([i*i for i in [1,3,5]])  #结果必须是一个列表 类似的还有字典推导式,集合推导式主要用来去掉重复元素 2、生成器表达式:括号表示 只是一个表达式,还是表示一个生成器,括号里的代码不会直接执行,当外部取值(_ _next_ _/list/for)时括号里的代码才会执行
laomuji = ('egg%d'%i for i in range(10)) #简化代码,最重要的就是节省内存
注意: 1、不要写太复杂的表达式 2、在代码里,多层嵌套的for循环时禁忌

转载于:https://www.cnblogs.com/wanghl1011/articles/7478789.html

你可能感兴趣的文章
计算机是怎么存储数字的
查看>>
github精选:微信小程序开发技巧(12月31日更新)2016
查看>>
struts2 中文 url参数
查看>>
CentOS 6系统优化脚本
查看>>
shell 脚本练习3
查看>>
android之首选项相关 Preferences(二)组织首选项
查看>>
两天时间,安装kivy环境,python3.5不行,只能用python2.7
查看>>
移动电商成电商重点市场
查看>>
Spring MVC数据校验(使用@Validated对@RequestParam参数校验)
查看>>
以中国电影市场托底的阿里影业,国际化算盘打的响
查看>>
ipvsadm命令参考
查看>>
实现loading的代码
查看>>
javascript中关于变量定义及范围
查看>>
MySQL 8.0新特性--skip scan range access method(七)
查看>>
Here Document
查看>>
MySQL高可用性之keepalived+mysql双主
查看>>
LVS类型之NAT
查看>>
SQL SERVER 2005如何建立自动备份的维护计划
查看>>
权限及权限管理
查看>>
linux文件系统
查看>>