执行函数的时候* 打散
定义函数的时候* 聚合
from functools import wraps def wrapper(f): # f = func1 @wraps(f) def inner(*args,**kwargs): #聚合 #args (1,2,3) ‘‘‘执行函数之前的相关操作‘‘‘ ret = f(*args,**kwargs) # 打散 1,2,3 ‘‘‘执行函数之后的相关操作‘‘‘ return ret return inner # 函数的执行时,*打散。 # 函数的定义时,*聚合。 @wrapper # func1 = wrapper(func1) func1 = inner def func1(*args): #args (1,2,3) print(666) return args print(func1(*[1,2,3])) # inner(1,3,5) 打散 打印函数有用信息
@wrapperdef func1(): """ 此函数是完成登陆的功能,参数分别是...作用。 :return: 返回值是登陆成功与否(True,False) """ print(666) return Truefunc1()print(func1.__name__)print(func1.__doc__)
#666
func1
此函数是完成登陆的功能,参数分别是...作用。
: return: 返回值是登陆成功与否(True,False)
带参数的装饰器
import timedef timmer(*args,**kwargs): def wrapper(f): def inner(*args,**kwargs): if flag: start_time = time.time() ret = f(*args,**kwargs) time.sleep(0.3) end_time = time.time() print(‘此函数的执行效率%f‘ % (end_time-start_time)) else: ret = f(*args, **kwargs) return ret return inner return wrapper flag = False@timmer(flag,2,3) # 两步:1,timmer(flag) --> wrapper 2,@wrapper 装饰器def func1(): print(666) @timmer(flag)def func2(): print(777)func1()func2()
多个装饰器装饰一个函数
def wrapper1(func): f = func def inner1(): print(‘wrapper1 ,before func‘) func() print(‘wrapper1 ,after func‘) return inner1 def wrapper2(func): func = inner1 def inner2(): print(‘wrapper2 ,before func‘) func() print(‘wrapper2 ,after func‘) return inner2 @wrapper2 然后读@wrapper2 f = inner2 @wrapper1 先读@wrapp1 f = inner1 def f(): print(‘in f‘) f() 再读f()
原文地址:https://www.cnblogs.com/yyyyyyyyyy/p/8691938.html
时间: 2024-10-10 22:30:40