码迷,mamicode.com
首页 > 编程语言 > 详细

关于Python中的yield

时间:2017-03-28 23:51:17      阅读:280      评论:0      收藏:0      [点我收藏+]

标签:变量   arc   href   logs   bsp   hive   保存状态   tor   top   

关于Python中的yield

http://www.cnblogs.com/tqsummer/archive/2010/12/27/1917927.html

 http://www.ibm.com/developerworks/cn/opensource/os-cn-python-yield/

 

一、迭代器(iterator)

在Python中,for循环可以用于Python中的任何类型,包括列表、元祖等等,实际上,for循环可用于任何“可迭代对象”,这其实就是迭代器

迭代器是一个实现了迭代器协议的对象,Python中的迭代器协议就是有next方法的对象会前进到下一结果,而在一系列结果的末尾是,则会引发StopIteration。任何这类的对象在Python中都可以用for循环或其他遍历工具迭代,迭代工具内部会在每次迭代时调用next方法,并且捕捉StopIteration异常来确定何时离开。

 

二、生成器(constructor)

生成器函数在Python中与迭代器协议的概念联系在一起。简而言之,包含yield语句的函数会被特地编译成生成器。当函数被调用时,他们返回一个生成器对象,这个对象支持迭代器接口。函数也许会有个return语句,但它的作用是用来yield产生值的。

不像一般的函数会生成值后退出,生成器函数在生成值后会自动挂起并暂停他们的执行和状态,他的本地变量将保存状态信息,这些信息在函数恢复时将再度有效

关于Python中的yield

标签:变量   arc   href   logs   bsp   hive   保存状态   tor   top   

原文地址:http://www.cnblogs.com/xiaoxuch-zhl/p/6637499.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!