您的位置:首页 > 其它

yield 跟return 区别

2013-09-17 23:44 405 查看
这个还是有点意思,两个都是有返回的意思,但是区别在哪里呢?

1.return 会销毁函数的局部变量,下次调用的时候又会产生新的值

2.yield 当退出函数的时候,变量人然存在,函数下次调用的时候变量仍然存在。

很好玩吧,那我就很好奇了,这个yield是generater的简便方法 ,所以generater有什么神奇的地方呢?

# Using the generator pattern (an iterable)
class firstn(object):
def __init__(self, n):
self.n = n
self.num, self.nums = 0, []

def __iter__(self):
return self

def next(self):
if self.num < self.n:
cur, self.num = self.num, self.num+1
return cur
else:
raise StopIteration()

test=firstn()
print test.next()
print test.next()
虽然这个也没有解释出什么,但是能更清晰感觉到这种关系。
如果真想知道generater的内部结构,也许真的该去读python源码,可惜水平不够呀。先到这里吧
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: