Python天天美味(25) - 深入理解yield - CoderZh - 博客园

Python天天美味(25) - 深入理解yield

 
yield的英文单词意思是生产,刚接触Python的时候感到非常困惑,一直没弄明白yield的用法。只是粗略的知道yield可以用来为一个函数返回值塞数据,比如下面的例子:

取出alist的每一项,然后把i + 1塞进去。然后通过调用取出每一项:

表达式(yield 5)的返回值将赋值给m,所以,认为 m = 5 是错误的。那么如何获取(yield 5)的返回值呢?需要用到后面要介绍的send(msg)方法。

3. 透过next()语句看原理

现在,我们来揭晓yield的工作原理。我们知道,我们上面的h()被调用后并没有执行,因为它有yield表达式,因此,我们通过next()语句让它执行。next()语句将恢复Generator执行,并直到下一个yield表达式处。比如:

, in <module>
    d = c.send('Fighting!')  #d 获取了yield 12 的参数值12
StopIteration

注:以上观点属于本人的个人理解,如有偏差请批评指正。谢谢!

 

 

Python 天天美味系列(总)

Python 天天美味(23) - enumerate遍历数组

Python 天天美味(24) - 初始化多维数组  

Python 天天美味(25) - 深入理解yield  

Python 天天美味(26) - __getattr__与__setattr__  

Python 天天美味(27) - 网络编程起步(Socket发送消息)  

最新文章

  1. python单元测试unittest
  2. offsetwidth/clientwidth的区别
  3. JSWindow对象
  4. 6.3 Android Framework
  5. 345. Reverse Vowels of a String
  6. Suricata+Barnyard2+Base的IDS前端Snorby
  7. jQuery:节点(插入,复制,替换,删除)操作
  8. Google软件构建工具Bazel
  9. ios UIImageView处理图片大小问题
  10. win7电脑关机时间长怎么办
  11. use case 的缺陷
  12. 微信小程序调用高德地图
  13. TYVJ P1039 【忠诚2】
  14. css动画特效
  15. SQL Server性能优化(11)非聚集索引的覆盖索引存储结构
  16. Python基础(5)——函数
  17. httpd服务的安装、配置
  18. 中标麒麟Linux7 如何关闭广播消息
  19. MySql5.7配置文件my.cnf设置
  20. jmeter制造大批量的用户数据数据

热门文章

  1. 使用VS+VisualGDB编译Linux版本RCF(相当于Linux也有COM版本了)
  2. python 求值表达式解析
  3. Outlook Express 收发邮件出现&amp;quot;0x800CCC0F&amp;quot;错误代码解决方法
  4. 怎样获取浏览器上次的会话数据(session)
  5. BZOJ 3173: [Tjoi2013]最长上升子序列( BST + LIS )
  6. C++数据结构之二叉树
  7. ASP.NET - 无限极分类
  8. oracle 查询
  9. linux命令:ftp
  10. 14.19 InnoDB and MySQL Replication InnoDB 和MySQL 复制: