python高阶函数

需要先看:
python第一类对象的特性
python函数的本质是对象

将函数作为参数传给另一个函数

通过 python函数的本质是对象 ,了解到 函数 可以赋值给 变量 ,那么也可以赋值给另一个函数的 形参

def test():
    print("test()函数")


def call_test(fun):
    print('形参是函数:',fun)
    fun()

调用

call_test(test)

给形参函数传值

def add(i,j):
    return i+j

def call_add(fun,i,j):
    return fun(i,j)

调用执行:

print(call_add(add,1,2))

返回函数

对此功能可能会不理解,没关系,应用场景 在后面章节介绍,本节先学会使用

def create_add():
    def fun(i,j):
        return i+j
    '''
    注意返回的是fun,后面没有小括号
    有小括号表示调用函数
    '''
    return fun

说明:
在函数create_add()内定义了 内部函数fun() ,并 返回函数对象fun

注意:
返回的是 fun函数对象,后面 不能有小括号 ,有小括号 表示 调用函数

测试调用:

#调用create_add()时,返回的并不是求和结果,而是求和函数
add=create_add()

#打印函数的内存地址
print(add)
print(id(add))

#后面加小括号表示调用
print(add(1,1))

另一种调用方式:

print(create_add()(1,1))
print(create_add()(2,2))

每次都返回新函数

add=create_add()
add2=create_add()

print(id(add))
print(id(add2))

每次返回函数的内存地址都不相同

扩展知识:
https://www.cnblogs.com/ghgyj/p/3997548.html
https://www.cnblogs.com/shhnwangjian/p/6533317.html


原文出处:/show_1EF2HxA5e6GX.html