python 装饰器 (个人随笔)

装饰器的基本实现:

def kuozhan(func):

  def newruixin():

    #扩展功能:
    print('如果我说如果‘)

    #调用基本函数

    func

    print('没有如果‘)

  #增加返回值

  return newruixin

 

#基本函数

@kuozhan   #ruixin = kuozhan(ruixin)  扩展之后的函数要重新赋值给基本函数,

def ruixin():
  print('很难实现‘)

 

#调用基本函数

ruixin()

 

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

 

# 和带有返回值的装饰器

def kuozhann(func):

  def newruixin():
    print('如果没有如果')

    result=func()

    print('哈哈哈哈哈‘)

    return result

  return newruixin

@kuozhan

def ruixin():

  print('一定没有如果‘)

  return '嘿嘿嘿嘿‘

ruixin()

 

---------------------------------------------------------------------------------------------------------------------------------------------

 

#带有参数的装饰器

def  outer(arg):

  def kuozhan(func):

    def newruixin():

      print('111111111')

      func()

      print('22222222')

 

    def newfanbo():

      print('aaaaaaaaaaa')

      func()

      print('bbbbbbbb')

    if arg =='ruixin':

      return newruixin

    elif arg =='fanbo'

      return newfanbo

  return kuozhan

 

@outer('ruixin')

def ruixin():

  print('111222')

@outer('fanbo')

  print('asasasa')

 

fanbo()

ruixin()

 

 

 

  

posted @ 2017-11-20 11:55  19950216  阅读(87)  评论(0编辑  收藏  举报