Python装饰器

什么是装饰器

装饰器是一个函数,顾名思义,它的作用是装饰,当它装饰一个函数时,可以为其增加新功能,而不用改动原函数,从而提高代码的可读性和重用性。

本质上,装饰器是一个返回函数的高阶函数,高阶函数是指接收函数作为参数的函数。

定义一个名为decorator的装饰器

1
2
3
4
5
def decorator(f):
def wrapper():
print("I'm wrapper")
return f()
return wrapper

使用装饰器装饰函数

把函数名重新绑定到可调用的decorator的返回结果上

1
2
3
def foo():
print("I'm foo")
foo = decorator(foo)

等价于

1
2
3
@decorator
def foo():
print("I'm foo")

调用装饰后的函数

1
2
3
>>>foo()
I'm wrapper
I'm foo