Python 闭包和装饰器:示例讲解
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() 函数。
因此,当我们运行以上代码时,输出结果将是:
在函数之前执行
这是我的函数
在函数之后执行
通过使用闭包和装饰器,我们可以使代码更加简洁、易于维护和扩展。
原文地址: https://www.cveoy.top/t/topic/mUhy 著作权归作者所有。请勿转载和采集!