python之函数式编程

一,编程的方法论:面向过程,函数式,面向对象

面向过程:没有返回值的,找到解决问题的入口,按照一个固定的流程去模拟解决问题的流程

二:函数式编程:函数式=编程语言定义的函数+数学意义的函数

例一:不可变:不用变量保存状态,不修改变量

#非函数式
a=1
def ic_test1():
    global  a
    a+=1
    return a
ic_test1()
print a

#函数式
a1=1
def ic_text2(a1):
    return a1+1
print ic_text2(2)
print a

 例二: 第一类对象:函数即"变量"

1,函数名可以当做参数传递

#把函数当做参数传给另外一个函数
def foo(n):
    print (n)
def bar(name):
    print ('my name is %s' %name)
    return bar
foo(bar)#函数当做变量被赋值,打印输出的是bar函数的内存地址
foo(bar("wnagyue"))

 2,返回值可以是函数名

#返回值中包含函数
def bar():
    print "from bar"
def foo():
    print "frm foo"
    return bar
n=foo()
n()

def handle():
    print "from handle"
    return handle
h=handle()
h()  #输出from handle from handle

 三:高阶函数:1,把函数当做参数传递给另外一个函数 2,返回值中包含函数  两种满足其一就可以