高阶函数(Higher-Order Function,HOF)是函数式编程中的一个重要概念。在Python中,可以将函数作为参数传递给另一个函数,或者将函数作为另一个函数的返回值。这种函数被称为高阶函数,表示它接受一个或多个函数作为参数;或者返回一个函数。如果高阶函数接收其它函数作为参数,则它在运行时,可以基于传递给它的函数进行动态调整。
Python 中有一些内置的高阶函数,包括函数式编程中经常使用到的 map(), filter(),reduce()和sorted()等。高阶函数的特点包括:
可以将函数存储在变量中。
函数可以作为对象类型的实例。
可以将一个函数作为另一个函数的返回值。
可以将一个函数作为参数传递给另一个函数。
可以将Python高阶函数存储在数据结构中,如列表、哈希表等。
下面看看如何在Python中定义高阶函数。
方法1: 使用函数作为对象的高阶函数
在Python中,可以将给定的函数分配给一个变量。这样的赋值不会调用实际的函数,而是创建对该函数的引用。这种将函数分配为变量对象的赋值将在程序中创建一个高阶函数。
def shout(text): return text.upper() greet = shout print(greet("hello")) print(shout("hello"))
方法2: 将函数作为另一个函数的参数
Python函数就像Python对象一样,因此可以使用Python函数将它们作为参数传递给另一个函数,这将创建一个高阶函数。
def greet(func): greeting = func("Hello, Python Developers!") print(greeting) def lower_case(text): return text.lower() greet(lower_case)
方法3: 将函数作为另一个函数的返回值
我们还可以将一个函数作为另一个函数的返回值,这也会使函数成为高阶函数。
def add(x): def adder(y): return x + y return adder add_15 = add(15) print(add_15(10))
Python高阶函数学习:
装饰器(Decorators)是Python中一种强大而灵活的功能,用于修改或增强函数或类的行为。装饰器本质上是一个函数,它接受另一个函数或类作为参数,并返回一个新的函数或类。通常用于在不修改原始代码的情况下添加额外的功能或拓展。
装饰器的语法使用 @ 符号,将装饰器应用于目标函数或类。从装饰的实现方式上可以分为装饰器函数和装饰器类,即分别使用函数或者类对其他对象(通常是函数或者类)进行封装(装饰)。
下面是一个基本的装饰器模板,适用于大多数装饰器用例。
from functools import wraps def your_decorator(func): @wraps(func) # 用于保留func的元数据 def wrapper(*args, **kwargs): # 在调用func之前做一些事情 result = func(*args, **kwargs) # 在调用func之后做一些事情 return result return wrapper
还可以为装饰器定义参数,如下所示:
from functools import wraps def your_decorator(arg): def decorator(func): @wraps(func) # 用于保留func的元数据 def wrapper(*args, **kwargs): # 在调用func之前做一些事情,可能使用arg result = func(*args, **kwargs) # 在调用func之后做一些事情,可能使用arg return result return wrapper return decorator
Python装饰器学习:
参考: