首页 > 编程语言 > 详细

Python 装饰器

时间:2021-06-17 17:13:53      阅读:18      评论:0      收藏:0      [点我收藏+]
#函数装饰器 &实现函数重载  &functools.wraps回源
#装饰器实现效果:可以在不改变原函数内部代码和调用方式的前提下,实现在函数执行和执行扩展功能。
#适用场景:多个函数系统统一在执行前后自定义一些功能。
import functools
def outer(fun):  #fun=func1
    @functools.wraps(fun)
    #加了以后,被装饰的函数使用.__name__或者.__doc__的时候就是它自己
    #若是不加,被装饰的函数使用nd的时候就指向装饰它的函数里面的方法
    def inner(*args, **kwargs):  #装饰器里面有个新函数用来“装饰”
        """"一只大螃蟹"""
        if len(args) == 1:
              print(before-1)
              res = fun(*args, **kwargs)
              print(after-1)
              return res
        else:
              print(before-2)
              res=fun(*args, **kwargs)
              print(after-2)
              return res
    return inner  #把装饰好的东西返回

@outer      #把下面的func1 当作参数传到outer函数里面
def func1(*args):
    """我爱你宝贝"""
    value=(11, 22, 33)
    print(func1函数,value)


func1()
#func1(5)
#func1(5,6)
print(func1.__name__)
print(func1.__doc__)

 

建议背会的装饰模板

import functools

def outer(fun):
    @functools.wraps(fun)  #__name__   __doc__  回源
    def inner(*args, **kwargs):
        # 执行前
        res = fun(*args, **kwargs)
        #执行后
        return res
    return inner

@outer
def func(*args):
    pass

func()

 

装饰器应用场景列举:网站界面区分是否需要登录

 

Python 装饰器

原文:https://www.cnblogs.com/liujinmeng/p/14892821.html

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