# 装饰器形成的过程——>最简单的装饰器,有返回值,有一个参数,无敌参数
# 装饰器的作用
# 语法糖
# 原则:开放封闭原则
# 装饰器的固定模式
# import time
# time.time() # 获取当前时间
# time.sleep(2) # 让程序在执行到此位置时停一会
# def timmer(f): # 装饰器函数
# def inner(*args,**kwargs):
# start = time.time()
# ret = f(*args,**kwargs) # 被装饰的函数
# print(time.time()-start)
# return ret
# return inner
# @timmer # 语法糖 @装饰器函数名
# def fun(a,b): # 被装饰的函数名
# time.sleep(1)
# print(‘老板好!!!‘,a,b)
# return ‘新年好‘
# fun=timmer(fun)
# ret = fun(1,b=2)
# 装饰器的作用
# 不想修改函数的调用方式,但是还想再原来的函数前后添加功能
# timmer就是一个装饰器函数,只是对一个函数有一些修饰功能
# 原则:开放封闭原则
# 开放:对拓展是开放的
# 封闭:对修改是封闭的
# import time
# def wrapper(f): # 装饰器函数,f是被装饰函数
# def inner(*args,**kwargs):
# ‘‘‘在被装饰的函数之前要做的事‘‘‘
# ret = f(*args,**kwargs) # 被装饰的函数的执行
# ‘‘‘在被装饰的函数之后要做的事‘‘‘
# return ret
# return inner
#
# @wrapper # 语法糖 @装饰器函数名
# def fun(a,b): # 被装饰的函数名
# time.sleep(1)
# print(‘老板好!!!‘,a,b)
# return ‘新年好‘
def wrapper(f):
def inner(*args,**kwargs):
print(‘在被装饰的函数之前做的事‘)
ret = f(*args,**kwargs)
print(‘在被装饰的函数之后做的事‘)
return ret
return inner
@wrapper # wuyi = wrapper(wuyi)
def wuyi(time):
print(‘假期还有{}天结束‘.format(time))
return ‘kaixin‘
ret = wuyi(3)
print(ret)
原文:https://www.cnblogs.com/Mr-Feng/p/10801957.html