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)
    流程如下






  • 相关阅读:
    计算机基础知识
    markdown简介及基本语法
    session和cookie的区别
    MySQL的游标
    数据库单表查询
    外键(有无级联)
    mysql
    数据库引擎
    守护进程和守护线程的区别
    快排等
  • 原文地址:https://www.cnblogs.com/ouyang99-/p/9050159.html
Copyright © 2011-2022 走看看