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

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

    开放封闭原则:

      开放:对扩展是开放的

      封闭:对修改是封闭的

    简单的装饰器:

    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你好美!")
  • 相关阅读:
    夜空中最亮的星
    让我留在你身边
    反思
    又想起民谣那诗
    初学积性函数
    P1049 装箱问题(01背包)
    set
    紫书 习题 10-4 UVa 1644(素数筛)
    紫书 习题 10-2 UVa 808(建立坐标+找规律)
    紫书 习题 10-1UVa 111040(找规律)
  • 原文地址:https://www.cnblogs.com/xixi-66/p/10051546.html
Copyright © 2011-2022 走看看