Python 闭包和装饰器:示例讲解

闭包

闭包是指一个函数内部定义的另一个函数,该内部函数能够访问外部函数的局部变量。

以下是一个使用闭包的例子:

def add(x):
    def inner(y):
        return x + y
    return inner

add5 = add(5)
print(add5(3))  # 输出 8

以上代码中,add() 函数返回一个内部函数 inner()。该内部函数使用了 add() 函数的参数 x,因此 inner() 是一个闭包。当我们调用 add() 函数时,会返回一个新的函数对象 inner()。我们可以将这个新函数对象保存在一个变量中(如 add5),然后再次调用它。

在上面的例子中,我们创建了一个名为 add5 的变量,它是 add() 函数的一个实例,其中 x 的值为 5。当我们调用 add5(3) 时,inner() 函数将 x 的值和 y 的值相加并返回结果 8。

装饰器

装饰器是一种在不修改原函数的情况下,为函数添加新功能的语法。它使用 @ 符号,后面跟着装饰器函数的名称。

以下是一个使用装饰器的例子:

def my_decorator(func):
    def wrapper():
        print('在函数之前执行')
        func()
        print('在函数之后执行')
    return wrapper

@my_decorator
def my_function():
    print('这是我的函数')

my_function()

在上面的例子中,我们定义了一个名为 my_decorator() 的函数,该函数接受一个函数作为参数,并返回一个新的函数 wrapper()wrapper() 函数将在传入的函数之前和之后执行一些操作。在这个例子中,我们只是打印了一些文本。

我们使用 @my_decorator 装饰器来应用 my_decorator() 函数到 my_function() 函数上。这意味着当我们调用 my_function() 函数时,实际上是调用了 wrapper() 函数。

因此,当我们运行以上代码时,输出结果将是:

在函数之前执行
这是我的函数
在函数之后执行

通过使用闭包和装饰器,我们可以使代码更加简洁、易于维护和扩展。

Python 闭包和装饰器:示例讲解

原文地址: https://www.cveoy.top/t/topic/mUhy 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录