yield 跟return 区别


这个还是有点意思,两个都是有返回的意思,但是区别在哪里呢?

 

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源码,可惜水平不够呀。先到这里吧




免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM