装饰器
一、简单装饰器
def my_decorator(func):
def wrapper():
print('wrapper of decorator!')
func()
return wrapper
def greet():
print('halo world!')
greet = my_decorator(greet)
greet()
# 输出
wrapper of decorator!
hello world!
@my_decorator
def greet2():
print('halo world2!')
greet2()
# 输出
wrapper of decorator!
hello world2!
这里my_decorator()为装饰器,将greet()包含在其中,改变了greet函数的行为,但是原函数greet并没变。不改变原函数的情况下,改变函数的行为。
调用方法:
1、像greet函数中进行调用
greet = my_decorator(greet) greet()
2、像greet2函数中进行调用 @my_decorator
这里的@称之为语法糖
二、带有参数的装饰器
def my_decorator(func):
def wrapper(*args,