装饰器

装饰器

  原则:开放封闭

  作用:在不改变原函数的调用方式情况下,在函数的前后添加功能

  本质:闭包函数

 

import time
def func():
    time.sleep(1)
    print('Hello World')

def timmer(f):
    def inner():
        f()
        print(time.strftime("%Y-%m-%d"))
    return inner
func = timmer(func)
func()

timmer 为装饰器

 

闭包函数 - 在内部函数引用外部函数的变量

装饰器函数 - 一定是闭包函数


 

def wrapper(func):      #此时func 为qqxing
    def inner(*args,**kwargs):
        ret = func(*args,**kwargs)
        return ret
    return inner

@wrapper   #此时qqxing 为 inner #qqxing = wrapper(qqxing)
def qqxing(a,b):
    print(123,a,b)
    return '新年好'

@wrapper
def qqxing2(*args):
    print(*args)
    return '新年快乐'

ret = qqxing(1,b=3)     #inner()
print(ret)
ret = qqxing2(1,2,3,4,5)
print(ret)
View Code

 

posted on 2018-08-27 14:23  偷悄悄的放个屁  阅读(76)  评论(0)    收藏  举报

导航