这个还是有点意思,两个都是有返回的意思,但是区别在哪里呢?
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源码,可惜水平不够呀。先到这里吧