标签:函数式编程
# -*- coding:utf-8-*- #---函数式编程 #-------高阶函数------ #变量可以指向函数 print abs(-10); #10 内置的求绝对值的函数 print abs; #<built-in function abs> 函数本身 #我们可以把函数赋给变量,即变量能够指向函数 s = abs; print s; #<built-in function abs> 没有问题 print s(-10); #10 可以使用 #----变量名也是函数 ''' abs = 10; print abs; #10 print abs(-10); #报错 一般不会用函数名当变量名,此时要恢复abs,重启python交互环境 我这里注掉 ''' #--传入函数 #上面看到变量可以指向函数,函数参数也能接收变量,那么一个函数也可以就收另一个函数作为参数,称为告诫函数 def add(x,y,f): return f(x)+f(y); print add(-5,7,abs); #12 5的绝对值+7的绝对值 #函数作为返回值 #求和 def sum(*args): x = 0; for i in args: x = x+i; return x; print sum(1,3,5); #9 #----------------------------- def lazy_sum(*args): def sum(): x = 0; for i in args: x = x + i; return x; return sum; s = lazy_sum(1,2); print s; #<function sum at 0x0000000005015668> 返回函数 print s(); #调用s返回结果 #------------------------------------------------------------------------ #------匿名函数 #不显示的定义函数,直接传入匿名函数 lambda是匿名函数的关键字 box=(map(lambda x:x*x,[1,2,3])); print box; #[1, 4, 9] ''' lambda x:x*x 即 def f(x): return x * x 关键字lambda冒号前是函数参数,后是表达式 限制:只能写一个表达式,不用写return,返回值是表达式的结果 好处:函数没有名字,不必担心函数名冲突。匿名函数也是一个函数对象,也可以把匿名函数赋值给一个变量,再用 变量来调用该函数 ''' f = lambda x :x * x print f; #<function <lambda> at 0x00000000057A56D8> print f(4); #16 #--匿名函数当返回值 def cj(x,y): return lambda :x * x + y *y s = cj(1,2); print s; #<function <lambda> at 0x0000000004D157B8> print s(); #5 #----标签:函数式编程
原文地址:http://blog.51cto.com/11927232/2056890