淘先锋技术网

首页 1 2 3 4 5 6 7

Python 中的装饰器是一种非常强大的工具,可以让我们方便地修改函数或者类的行为。装饰器本质上是一个特殊的函数,接受一个函数或者类作为参数,并且返回一个新的函数或者类。

def my_decorator(func):
def wrapper(*args, **kwargs):
print('Before function is called.')
result = func(*args, **kwargs)
print('After function is called.')
return result
return wrapper
@my_decorator
def my_function():
print('Function is called.')
my_function()

上面的例子演示了一个简单的装饰器,当 my_function 被调用时,会先执行 my_decorator 函数,并且在执行 my_function 函数的前后打印一些信息。

可以看到,装饰器的使用非常方便,通过在函数上添加 @my_decorator 装饰器就可以完成函数行为的修改。如果要取消装饰器的效果,只需要在函数上添加 @my_decorator 装饰器即可。

def my_function():
print('Function is called.')
@my_decorator
def my_function_decorated():
print('Function is called.')
my_function()
my_function_decorated()

装饰器还可以接受参数,这样就可以让装饰器更加灵活。下面是一个接受参数的装饰器示例:

def repeat(num):
def my_decorator(func):
def wrapper(*args, **kwargs):
for i in range(num):
func(*args, **kwargs)
return wrapper
return my_decorator
@repeat(num=3)
def my_function():
print('Function is called.')
my_function()

上面的例子定义了一个 repeat 装饰器,接受一个 num 参数,表示要重复执行多少次被装饰的函数。当使用 @repeat(num=3) 装饰 my_function 函数时,my_function 会被重复执行 3 次。