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你好美!")
  • 相关阅读:
    POJ_1698_Alice's Chance
    透过比特币看移动互联网创业产品立项的关键要素
    localhost与127.0.0.1的区别
    web service初探
    Oracle导出DMP文件的两种方法
    html大小写问题
    浏览器端数据存储
    CSS滚动条样式设置
    浅谈forword和sendRedirect
    Poi对excel的基本操作
  • 原文地址:https://www.cnblogs.com/xixi-66/p/10051546.html
Copyright © 2011-2022 走看看