装饰器

装饰器举例

def outer (func):

  def inner():

    print('hello')

    return func()

    print('end')

    return r

  return inner

@outer   ----------------写上这个@ 符号就代表着使用装饰器

 

def f1():

  print('f1')

 

def f2():

  print('f2')

 

原理剖析

 

符号:@ outer 

   def f1()

一、第一步执行outer函数,并将下面的函数名f1,当做参数

二、第二部将outer的返回值重新赋值给f1

三、新f1函数等于inner ,执行f1函数就是执行inner()函数

本质:将原函数封装到函数里等于一个新函数,执行原函数和新函数

 

四、带参数的装饰器

def outer (func):

  def inner(a1,a2):

    print('hello')

    r= func(a1,a2)

    print('end')

    return r

  return inner

@outer   ----------------写上这个@ 符号就代表着使用装饰器

 

def f1(a1,a2):

  print('f1')

  return a1+a2

f1(1,2)

五、多参数的装饰器

def outer(func):

  def inner(*args,**kwargs):

    print('123')

    ret = func(*args,**kwargs)

    print('456')

    return ret

  return inner

@outer

def index(a1,a2)

  print(‘’非常复杂‘’)

  return = a1 +a2

 

posted @ 2018-06-28 17:10  黄瓜不是好瓜  阅读(66)  评论(0编辑  收藏  举报