lambda函数、generator函数、yield与return语句的区别
2014-08-20 19:05
162 查看
lambda函数
lambda函数用于创建一个匿名函数,函数名未和标识符绑定,使用lambda函数可以返回一些简单的运算结果。
生成器generator
生成器的作用是一次产生一个数据项,并把数据项输出。generator函数可以用在for循环中遍历。generator函数每次返回一个数据项的功能使得迭代器性能更佳:
generator函数在函数体内一定有yield生成数据项。
yield与return语句的区别
程序需要高性能,一次只需一个值进行处理时,使用generator函数。当需要获取一次性一组元素的值时,使用序列。
lambda函数用于创建一个匿名函数,函数名未和标识符绑定,使用lambda函数可以返回一些简单的运算结果。
# -*- coding: UTF-8 -*- #lambda也称为表达式,lambda中只能使用表达式,不能使用判断、循环等多重语句 def func(): #实现表达式(x+y)*(m-n) x = 1 y = 2 m = 3 n = 4 sum = lambda x, y : x + y #lambda地址赋值给一个变量使用 lambda与变量sum绑定在一起了 print sum #sum保存的是lambda函数的地址,输出结果<function <lambda> at 0x01992370> sub = lambda m, n : m - n #:左边m,n为参数,:右边的m-n为表达式即函数体 print sub #输出结果<function <lambda> at 0x01992330> return sum(x, y) * sub(m, n) #有函数地址,就相当于函数了,可以调用函数 print func() #运行结果为-3 # 前面lambda赋值给一个变量使用,也可以直接把lambda当函数使用 print (lambda x: -x)(-2) #函数参数为-2,返回结果2
生成器generator
生成器的作用是一次产生一个数据项,并把数据项输出。generator函数可以用在for循环中遍历。generator函数每次返回一个数据项的功能使得迭代器性能更佳:
generator函数在函数体内一定有yield生成数据项。
# -*- coding: UTF-8 -*- # 定义generator函数 def func(n): for i in range(n): yield i # 在for循环中输出 for i in func(3): print i # generator函数使用next()输出结果 r = func(3) print r.next() print r.next() print r.next() #print r.next() 已经到头了访问越界时在输出会报错StopIteration
yield与return语句的区别
# yield与return区别 #1.yield保留字与return语句的返回值和执行原理不相同。 # 2.yield生成值并不会终止程序运行,like continue,而return返回值后程序将终止执行like break def func(n): for i in range(n): return i #碰到return语句,函数就结束 def func2(n): for i in range(n): yield i print func(3) #输出结果0 f = func2(3) print f #<generator object func2 at 0x013442D8>返回func2()的地址 print f.next() #输出0 print f.next() #输出1 print f.next() #输出2
程序需要高性能,一次只需一个值进行处理时,使用generator函数。当需要获取一次性一组元素的值时,使用序列。
相关文章推荐
- yield与return的区别
- break,continue,goto,return语句区别详解
- 跳转语句continue;break;return的区别
- Java中break, continue, return语句的使用区别
- break、return语句的使用区别
- break,continue,goto,return语句区别详解
- 控制跳转语句break ,continue,return 的应用场景和区别
- Java中break、continue、return语句的使用区别
- Java中break、continue、return语句的使用区别
- 跳转控制语句break,continue,return的区别。
- 4、break,continue,goto,return语句区别详解
- java和c++的区别之return语句
- ABAP中RETURN与EXIT语句的区别
- Java中break、continue、return语句的使用区别对比(附实例)
- 浅谈break 、continue、return,goto四种语句的区别。
- exit()和return语句的区别
- ABAP中RETURN与EXIT语句的区别
- 面试题之final,finally和finalize的区别以及如果catch里面有return语句,请问finally里面的代码还会执行吗?
- return、break、continue语句的区别
- 跳转控制语句:关于break,continue,和return的区别