首页 > 其他 > 详细

知识点拾遗——装饰器

时间:2021-06-16 22:21:19      阅读:30      评论:0      收藏:0      [点我收藏+]

装饰器

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的属性值

知识点拾遗——装饰器

原文:https://www.cnblogs.com/yangzilaing/p/14890881.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!