# 调用函数的时候,日志写入时间姓名函数功能
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()
![]()