yield 跟return 区别
2013-09-17 23:44
405 查看
这个还是有点意思,两个都是有返回的意思,但是区别在哪里呢?
1.return 会销毁函数的局部变量,下次调用的时候又会产生新的值
2.yield 当退出函数的时候,变量人然存在,函数下次调用的时候变量仍然存在。
很好玩吧,那我就很好奇了,这个yield是generater的简便方法 ,所以generater有什么神奇的地方呢?
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源码,可惜水平不够呀。先到这里吧
相关文章推荐
- lambda函数、generator函数、yield与return语句的区别
- python中print,return和yield的区别
- yield与return的区别
- yield与return的区别
- break,continue,return的区别
- php 的 echo(),print(),print_r(),printf() var_dump() return 的区别
- Java线程中sleep()、wait()和notify()和notifyAll()、yield()、join()等方法的用法和区别
- return 和exit的区别
- java中的break、continue、return的区别
- goto,break,return及continue的区别
- continue break return的用法和区别
- Linux 下用vfork()创建进程,子进程用return和exit返回的区别
- java中yield(),sleep()以及wait()的区别
- php进行支付宝开发中return_url和notify_url的区别分析
- Java中break、continue、return语句的使用区别对比
- JS_return、return false的区别
- 循环结构中break、continue、return和exit的区别
- final,finally和finalize区别,catch里面有return语句的执行顺序
- FORM中使用onSubmit="return false"防止表单自动提交,以及submit和button提交表单的区别
- (转)解析php中die(),exit(),return的区别