Python高阶函数与装饰器

阶函数(Higher-Order Function,HOF)是函数式编程中的一个重要概念。在Python中,可以将函数作为参数传递给另一个函数,或者将函数作为另一个函数的返回值。这种函数被称为高阶函数,表示它接受一个或多个函数作为参数;或者返回一个函数。如果高阶函数接收其它函数作为参数,则它在运行时,可以基于传递给它的函数进行动态调整。

Python 中有一些内置的高阶函数,包括函数式编程中经常使用到的 map(), filter(),reduce()和sorted()等。高阶函数的特点包括:

  1. 可以将函数存储在变量中。

  2. 函数可以作为对象类型的实例。

  3. 可以将一个函数作为另一个函数的返回值。

  4. 可以将一个函数作为参数传递给另一个函数。

  5. 可以将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装饰器学习:


参考:

anzhihe 安志合个人博客,版权所有 丨 如未注明,均为原创 丨 转载请注明转自:https://chegva.com/5974.html | ☆★★每天进步一点点,加油!★★☆ | 

您可能还感兴趣的文章!

发表评论

电子邮件地址不会被公开。 必填项已用*标注