zoukankan      html  css  js  c++  java
  • 装饰器

    一 为何要用装饰器

    #开放封闭原则:对修改封闭,对扩展开放

    二 什么是装饰器

    装饰器他人的器具,本身可以是任意可调用对象,被装饰者也可以是任意可调用对象。
    强调装饰器的原则:1 不修改被装饰对象的源代码 2 不修改被装饰对象的调用方式
    装饰器的目标:在遵循1和2的前提下,为被装饰对象添加上新功能



    def outer(func):
    def inner():
    print("我是装饰之后的")
    func()
    print('4444')
    return r


    @outer
    def f1():
    print("我是老函数")
    return True

    f1()


    传参之后的装饰器


    def outer(func):
    def inner(*arg,**kwargs):
    print('我是新人')
    ret = func(*arg,**kwargs)
    print('lalala')
    return ret


    return inner

    @outer
    def index(*args,**kwargs):
    print('我是原函数')
    return index


    index(1,2)


















    多个装饰器同一个函数,并且含有参数

    def outer_0(func):
    def inner(*args,**kwargs):
    print('3.5')
    r = func(*args,**kwargs)
    return r

    return inner

    def outer(func):
    def inner(*args,**kwargs):
    print('123')
    r = func(*args,**kwargs)
    print('456')
    return r
    return inner
    @outer_0
    @outer
    def f1(a1,a2):
    print('f1')
    return "fff"

    f1(1,2)
    流程如下






  • 相关阅读:
    每日一题20180325
    Linux下MySQL表名区分大小写
    CentOS删除编译安装的Python3
    HTTPS配置
    测试 js 方法运行时间(转)
    使用dbutils进行批处理
    oracle生成主键
    JDBC学习笔记(10)——调用函数&存储过程(转)
    easyui Draggable
    blob
  • 原文地址:https://www.cnblogs.com/ouyang99-/p/9050159.html
Copyright © 2011-2022 走看看