python的高阶函数

avatar 2020年4月19日21:22:34 评论 1,299 次浏览

高阶函数就是一个函数的的值,作为参数传给另一个函数,或者一个函数的返回值为另一个函数(若返回值为该函数本身,则为递归)这就叫高阶函数,方便我们理解我们理解,下面我们看一个小例子:

#!/usr/bin/python3
#coding:utf-8
#~~~~~~~~~~~~www.wulaoer.org 吴老二个人博客~~~~~~~

def wulaoer(x):
    wolf=x * x
    return wolf
print("整数的平方值",wulaoer(2))

打印结果:

整数的平方值 4

在这里wulaoer()就是一个函数,在这个基础上我们写一个高阶函数。首先在wulaoer这个函数中传入的是一个整数,那么我可以把这个整数替换成一个函数,然后,在函数中做一个判断,判断传入的值是否是整数,并返回一个值,传到wulaoer()函数中。看下面的例子:

#!/usr/bin/python3
#coding:utf-8
#~~~~~~~~~~~~www.wulaoer.org 吴老二个人博客~~~~~~~

def ints(s):
    if type(s) == int:
        return s
    else:
        return None

def wulaoer(func):
    wolf=func * func
    return wolf
#print("整数的平方值",wulaoer(2))
print("一个函数的值作为另一个函数的参数",wulaoer(ints(2)))

打印结果:

一个函数的值作为另一个函数的参数 4

在上面的实例中,wulaoer()函数的参数就是一个函数的结果,我们就可以把wulaoer()函数叫做高阶函数。如果函数wulaoer()不加参数只是一个函数本身,去掉括号就是一个对象打印的是内存地址,可以赋值给变量,在调用的时候我们可以使用赋值后的变量进行调用。看下面的例子:

#!/usr/bin/python3
#coding:utf-8
#~~~~~~~~~~~~www.wulaoer.org 吴老二个人博客~~~~~~~

def ints(s):
    if type(s) == int:
        return s
    else:
        return None

def wulaoer(func):
    wolf=func * func
    return wolf
#print("整数的平方值",wulaoer(2))
print("一个函数的值作为另一个函数的参数",wulaoer(ints(2)))
wulaoer.org=ints
print("函数赋值给变量后调用变量",wulaoer(wulaoer.org(6)))

打印结果:

一个函数的值作为另一个函数的参数 4
函数赋值给变量后调用变量 36

其实,我们可以把函数名就看作是一个变量,它指向一个可以计算绝对值的函数。如果我们把ints指向一个对象,那么在调用的时候就不会调用函数本身,而对调用一个指定的对象了。

在python中,像这种一个函数的值作为另一个函数的参数被调用的过程就是高阶函数,而且python中有很多这种类似的高阶函数,例如:map、filter、reduce。

avatar

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: