装饰器
def wrappwer(func):
def inner(*args,**kwargs):
print("molaoshi")
ret = func(*args,**kwargs)
#函数后的操作
print("liner")
return inner
@wrappwer
def func1(a,b):
print(a)
print("yangzil")
print(b)
func1("alex","yan")
#如果有参数的话,就该这样搞,那么为什么要这样设计呢?说白了就是将函数封装进去在在器前后添加某些操作,
# 至于参数的话,反正已经大三无所谓,甚至可以利用这些参数进行某种函数前后的操作
#而最后调用函数的额时候其实是个返回值,func1("alex","yan")是用来接收函数的返回值的
from functools import wraps
def deco(func):
@wraps(func) #加在最内层函数正上方
def wrapper(*args,**kwargs):
return func(*args,**kwargs)
return wrapper
@deco
def index():
'''哈哈哈哈'''
print('from index')
print(index.__doc__)
print(index.__name__)
#使⽤装饰器时,有⼀些细节需要被注意。
#例如,被装饰后的函数其实已经是另外⼀个函数了(函数名等函数属性会发⽣改变)。添加后由于函数名和函数的doc发⽣了改变,对测试结果有一定影响!
#wraps是用来将inner函数的属性设置为index的属性值