# 调用函数的时候,日志写入时间姓名函数功能
def func1(): ''' 此函数是完成登录的功能,参数分别是...作用... :return #返回值是(true,false)登录成功与否 ''' print(666) print(func1,__name__) print(func1.__doc__) return True func1()
带参数的装饰器 import time def timer(flag): def wrapper(f): #f=func1 def inner(*args,**kwargs):#聚合 if flag: start_time = time.time() ret=f(*args,**kwargs) #打散1,2,3 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 = True @timer(flag) #两步:1.timer(flag)-》wrapper 2.@wrapper def func1(): print(666) @timer(flag) def func2(): func1() func2()
a=5 def func1(): a+=1 print(a) func1() 报错,如果中间加global a可以引用全局作用域
a=5 def func1(): global a a+=1 print(a) func1()
# 多个装饰器装饰一个函数 def wrapper1(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 #f=wrapper2(f) 里面的f==inner1 外面的f->inner 2 @wrapper1 #f=wrapper1(f) 里面的f是函数名 外面的f是inner1 def f(): print('in f') f()