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






  • 相关阅读:
    php 邮件发送开发前期配置
    抛弃传统的curl,使用Guzzle
    TP5.1 分页(带参数传递)
    tp5.1 模型 where多条件查询 like 查询
    xpath 和 jsonpath 解析
    python分布式爬虫框架 --- scrapy-redis
    python爬虫框架——scrapy
    python爬虫 --- urllib
    mysql事务和锁
    mysql数据储存
  • 原文地址:https://www.cnblogs.com/ouyang99-/p/9050159.html
Copyright © 2011-2022 走看看