【Python函数】如何在Python中定义高阶函数?
在Python中定义高阶函数是很简单的,因为Python中函数是 类对象(First-class Object)。这意味着函数可以像普通变量一样被传递、赋值和返回。
高阶函数是指可以接受一个或多个函数作为参数,并且/或者返回一个函数的函数。Python中的高阶函数可以用来实现函数式编程的思想,以及处理复杂的数据结构和算法。
下面我们来看一些Python定义高阶函数的示例。
1. 接受一个函数作为参数
定义一个高阶函数,接受一个函数作为参数,并对传入的函数进行操作。
def apply_func(func, arg): return func(arg)
其中,apply_func函数接受两个参数,一个是函数func,另一个是arg,它们分别代表要操作的函数和传入要操作函数的参数。
接下来,我们可以定义一个简单的函数,用于对传入的参数进行平方操作:
def square(x): return x * x
现在,我们可以调用apply_func函数,将square函数和一个参数3传递给它,看看它能否操作成功:
result = apply_func(square, 3) print(result) # 9
结果输出9,说明apply_func函数成功调用了我们传递的函数square,并返回了对3进行平方的结果。
2. 返回一个函数
定义一个高阶函数,它返回另一个函数。
def make_adder(n):
def adder(x):
return x + n
return adder
在这个示例中,我们定义了一个名为make_adder的函数,它接受一个参数n。在函数内部,我们又定义了一个名为adder的函数,它接受一个参数x,并返回x + n的结果。最后,make_adder函数返回adder函数。
现在,我们可以调用make_adder函数,并获得一个名为add_5的函数,它可以将传入的参数加上5。
add_5 = make_adder(5) result = add_5(10) print(result) # 15
在这个示例中,我们调用make_adder函数,并传递参数5。我们将返回的函数赋值给add_5。最后,我们调用add_5函数,将10传递给它,并输出其结果。结果显示add_5可以将传入的参数加上5,因此结果为15。
3. 高阶函数转换器
定义一个函数,它接受一个函数作为参数,将其转换为高阶函数,并返回。
def decorate(func):
def wrapper(*args, **kwargs):
print('Before function is called.')
result = func(*args, **kwargs)
print('After function is called.')
return result
return wrapper
在这个示例中,我们定义了一个名为decorate的函数,它接受一个参数func。在函数内部,我们又定义了一个名为wrapper的函数,它接受任意类型的参数,并通过调用func函数将它们传递到func函数中。在wrapper函数调用func函数之前和之后,我们输出了一些文本。最后,decorate函数返回wrapper函数。
现在,我们可以定义一个名为add函数,它简单地将传入的两个参数相加。
def add(x, y): return x + y
接下来,我们可以调用decorate函数,并将add函数作为参数传递给它。然后,我们将返回的函数赋值给add_decorated函数。
add_decorated = decorate(add) result = add_decorated(2, 3) print(result) #5
在这个示例中,我们调用decorate函数,并将add函数作为参数传递给它。我们将返回的函数赋值给add_decorated。我们调用add_decorated函数,将2和3传递给它,并输出其结果。在调用add函数之前和之后,我们的wrapper函数输出了一些文本。
总结
在Python中,定义高阶函数非常容易。Python支持函数作为 类对象,这意味着函数可以像普通变量一样被传递、赋值和返回。通过使用高阶函数,我们可以实现函数式编程的思想,以及处理复杂的数据结构和算法。
