装饰器就是一个闭包的应用
先来看看什么是闭包
主要是满足两点:
1.函数内部定义的函数;
2.引用了外部变量但非全局变量
代码
def count():
a = 1
b = 1
def sum():
c = 1
return a + c # a - 自由变量
return sum
装饰器可已让原来的代码不变而增加新的功能
可以减少代码的复用,增加代码的可读性
代码
import time
def decorator(func):
def wrapper(*args, **kwargs):
start_time = time.time()
func()
end_time = time.time()
print(end_time - start_time)
return wrapper
@decorator
def func():
time.sleep(0.8)
func()
代码
#coding:utf-8
def use_logging(func):
def wrapper():
print("123")
return func()
return wrapper
@use_logging
def foo():
print(“i am foo”)
foo()