• 装饰器


    装饰器的作用:原函数不改变原来的调用方式,还要在原函数上添加新的功能

    开放封闭原则:

      开放:对扩展是开放的

      封闭:对修改是封闭的

    简单的装饰器:

    def wrapper(f):  #装饰器
         def inner():
             f()
         return inner
     @wrapper   #func=wrapper(func)
     def func():  #被装饰函数
         print("xxx你好!")
     func()

    带有返回值的装饰器:

    1 def wrapper(f):  #装饰器
    2     def inner():
    3         ret = f()
              return ret
    4     return inner
    5 @wrapper   # 语法糖 装饰器函数名 func=wrapper(func)
    6 def func():  #被装饰函数
    7     print("xxx你好!")
          return "我是返回值"
    8 ret = func()
        print(ret)

    加一个参数的装饰器

    1 def wrapper(f):  #装饰器
    2     def inner(a):
    3         f(a)
    4     return inner
    5 @wrapper   # 语法糖 装饰器函数名 func=wrapper(func)
    6 def func(a):  #被装饰函数
    7     print("xxx你好!",a)
    8 func(1)

    万能装饰器:

    def wrapper(f):  #装饰器
         def inner(*args,**kwargs):
             ret = f(*args,**kwargs)
             return ret
         return inner
     @wrapper   #func=wrapper(func)
     def func():  #被装饰函数
         print("xxx你好!")
     func()

     带参数的装饰器

    多个装饰器应用:

     1 def  outer(f):
     2     def inner():
     3         print('b1_before)
     4         f()
     5         print('b1_after)
     6     return inner
     7 def outer1(f):
     8     def inner1():
     9         print('b2_before)
    10         f()
    11         print('b2_after)
    12     return inner1
    13 @outer1        
    14 @outer
    15 def func():
    16     print("xxx你好美!")
  • 相关阅读:
    3秒后页面跳转代码
    数据库 ""和null的在java 持久化中的区别
    去掉标签元素
    hibernate 自动封装
    hql 多对多查询
    javascript 数组
    spring mvc+mybatis整合
    collection映射
    mybatis中one2many
    mybatis中many2one
  • 原文地址:https://www.cnblogs.com/xixi-66/p/10051546.html
Copyright © 2020-2023  润新知